kyu 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -37,21 +37,21 @@ class ImageResizerWorker
37
37
  end
38
38
  ```
39
39
 
40
- `kyu start -- image_resize_worker.rb image_resizing`
40
+ `kyu start -- image_resizing image_resize_worker.rb`
41
41
 
42
42
  # image_resize_postman.rb
43
43
  ```ruby
44
44
  #!/usr/bin/env ruby
45
45
  require 'kyu'
46
46
 
47
- class ImageResizerPostman
47
+ class ImageResizePostman
48
48
  include Kyu::Postman
49
49
 
50
50
  queue_name 'image_resizing'
51
51
  end
52
52
 
53
53
  if __FILE__ == $PROGRAM_NAME
54
- ImageResizerWorker.send_message( url: ARGV[0], width: ARGV[1], height: ARGV[2] )
54
+ ImageResizePostman.send_message( url: ARGV[0], width: ARGV[1], height: ARGV[2] )
55
55
  end
56
56
  ```
57
57
 
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency "aws-sdk", ">= 1.33"
22
22
  spec.add_dependency "daemons"
23
+ spec.add_dependency "eventmachine"
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.3"
25
26
  spec.add_development_dependency "rake"
data/lib/kyu.rb CHANGED
@@ -1,6 +1,8 @@
1
+ require 'eventmachine'
1
2
  require 'aws-sdk'
2
3
  require 'logger'
3
4
  require 'json'
5
+ require 'timeout'
4
6
 
5
7
  require_relative 'kyu/version'
6
8
  require_relative 'kyu/worker'
@@ -15,7 +17,7 @@ if RUBY_VERSION < '2'
15
17
  end
16
18
 
17
19
  module Kyu
18
- def stringify_exception( exception )
20
+ def self.stringify_exception( exception )
19
21
  backtrace = exception.backtrace.join( ' | ' )
20
22
  "(#{exception.class}) #{exception.message}; <trace>#{backtrace}</trace>"
21
23
  end
@@ -1,5 +1,3 @@
1
- require 'timeout'
2
-
3
1
  module Kyu
4
2
  class Manager
5
3
  def initialize( worker_klass, queue_name, options={} )
@@ -11,8 +9,17 @@ module Kyu
11
9
  @worker_klass = worker_klass
12
10
 
13
11
  sqs = AWS::SQS.new
14
- @queue = sqs.queues.create( queue_name, queue_options )
15
12
  @dl_queue = sqs.queues.create( deadletter_queue_name_for( queue_name ), queue_options )
13
+ @queue = sqs.queues.create( queue_name, queue_options )
14
+ @queue.client.set_queue_attributes(
15
+ queue_url: @queue.url,
16
+ attributes: {
17
+ "RedrivePolicy" => {
18
+ "maxReceiveCount" => @max_retries,
19
+ "deadLetterTargetArn" => @dl_queue.arn
20
+ }.to_json
21
+ }
22
+ )
16
23
  end
17
24
 
18
25
  def start
@@ -49,7 +56,7 @@ module Kyu
49
56
  msg.delete
50
57
  @logger.info( "Finished processing: '#{msg.body}'" )
51
58
  rescue => err
52
- @logger.error( stringify_exception( err ) )
59
+ @logger.error( Kyu.stringify_exception( err ) )
53
60
  @error_callback.call( err )
54
61
  if msg.receive_count > @max_retries
55
62
  @logger.info( "Max number of reties exceeded for: '#{msg.body}'. Migrating the message to the dead-letter queue." )
@@ -61,7 +68,7 @@ module Kyu
61
68
  end
62
69
 
63
70
  def deadletter_queue_name_for( queue_name )
64
- queue_name + '_deadletter'
71
+ queue_name + '_DeadLetter'
65
72
  end
66
73
  end
67
74
  end
@@ -1,3 +1,3 @@
1
1
  module Kyu
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kyu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: eventmachine
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: bundler
48
64
  requirement: !ruby/object:Gem::Requirement