kyu 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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