dispatch-rider 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e8c83bd0eaa995fa7670ffdefc142601edf76b67
4
- data.tar.gz: 3da06e688819bd362c5ad5496ff8bb69373ff8a6
3
+ metadata.gz: 30af4d35a460ffed8231e8baf51fce6e2cd03d31
4
+ data.tar.gz: 72064d34039b26cff1d57f1e378c261f68e7a59d
5
5
  SHA512:
6
- metadata.gz: 80f0873bf4ba615d32eef762af905f2c627d100183de4fabb5ddb96a849a0656ed233b4d77cd19983c540ad44f3b2bad43247eecb6d57e5c4532f169cca23c4e
7
- data.tar.gz: a0488d4f6932746868fb83a60714a35b59d26798c32bc5dd82a9c2ac700c9ad914324f5ba1c49e8127fcf18d73f8435b1ab320306bc0eac434b8c5819a5a9cb9
6
+ metadata.gz: bafae95fb175d28736ac1ca3615c84d3e446f4736e82ba75582b092877f205dc363e9d9f26b36d8ddcc5f07b7103f63307f91ab656e557c8ffa080ea7a9e60bc
7
+ data.tar.gz: 6fefbc2b6f0b5f72dad10835a76c1ae810abb4f391368eb1c71f0816fc1074d4611fb519eb2451e2e5569590bf3ef460dcfdb088bcb7700b98812b1cc1087f9f
data/README.md CHANGED
@@ -208,6 +208,8 @@ DispatchRider.config do |config|
208
208
  end
209
209
  end
210
210
 
211
+ config.logger = Rails.logger
212
+
211
213
  config.error_handler = DispatchRider::DefaultErrorHandler # an object that responds to .call(message, exception)
212
214
 
213
215
  config.queue_kind = :sqs
@@ -217,6 +219,11 @@ DispatchRider.config do |config|
217
219
  end
218
220
  ```
219
221
 
222
+ Options:
223
+
224
+ * `logger` : what logger to use to send messages to (responds to the standard ruby Logger protocol), defaults to a new Logger sending messages to STDERR
225
+
226
+
220
227
  ### Callbacks
221
228
 
222
229
  Dispatch rider supports injecting callbacks in a few parts of the
@@ -237,12 +244,10 @@ To setup a subscriber you'll need message handlers. The handlers are named the s
237
244
  Sample message handler:
238
245
  ```ruby
239
246
  # app/handlers/bar_handler
240
- module ReadNews
241
- class << self
242
- def process(message_body)
243
- message_body["headlines"].each do |headline|
244
- puts headline
245
- end
247
+ class ReadNews < DispatchRider::Handlers::Base
248
+ def process(message_body)
249
+ message_body["headlines"].each do |headline|
250
+ puts headline
246
251
  end
247
252
  end
248
253
  end
@@ -1,6 +1,6 @@
1
1
  module DispatchRider
2
2
  class Configuration
3
- attr_accessor :handler_path, :error_handler, :queue_info, :queue_kind, :subscriber
3
+ attr_accessor :handler_path, :error_handler, :queue_info, :queue_kind, :subscriber, :logger
4
4
  attr_reader :callbacks
5
5
 
6
6
  def initialize
@@ -10,6 +10,7 @@ module DispatchRider
10
10
  @queue_info = { path: "tmp/dispatch-rider-queue" }
11
11
  @callbacks = Callbacks::Storage.new
12
12
  @subscriber = DispatchRider::Subscriber
13
+ @logger = Logger.new(STDERR)
13
14
  end
14
15
 
15
16
  delegate :before, :after, :around, :to => :callbacks
@@ -35,7 +35,7 @@ module DispatchRider
35
35
  def dispatch_message(message)
36
36
  dispatcher.dispatch(message)
37
37
  rescue => exception
38
- error_handler.call(message, exception)
38
+ handle_message_error message, exception
39
39
  false
40
40
  end
41
41
 
@@ -48,11 +48,38 @@ module DispatchRider
48
48
  end
49
49
  end
50
50
 
51
+ def message_info_fragment(message)
52
+ "(#{message.object_id}): #{message.subject} : #{message.body.inspect}"
53
+ end
54
+
51
55
  def handle_next_queue_item
52
56
  queue.pop do |message|
53
- dispatch_message(message)
57
+ begin
58
+ logger.info "Starting execution of: #{message_info_fragment(message)}"
59
+ dispatch_message(message)
60
+ ensure
61
+ logger.info "Completed execution of: #{message_info_fragment(message)}"
62
+ end
54
63
  end
55
64
  end
56
65
 
66
+ def exception_info_fragment(message, exception)
67
+ "(#{message.object_id}): #{message.subject} with #{exception.class}: #{exception.message}"
68
+ end
69
+
70
+ def handle_message_error(message, exception)
71
+ begin
72
+ logger.error "Failed execution of: #{exception_info_fragment(message, exception)}"
73
+ error_handler.call(message, exception)
74
+ rescue => error_handler_exception # the error handler crashed
75
+ logger.error "Failed error handling of: #{exception_info_fragment(message, error_handler_exception)}"
76
+ raise error_handler_exception
77
+ end
78
+ end
79
+
80
+ def logger
81
+ DispatchRider.config.logger
82
+ end
83
+
57
84
  end
58
85
  end
@@ -30,12 +30,16 @@ module DispatchRider
30
30
  @callbacks ||= Callbacks::Access.new(config.callbacks)
31
31
  end
32
32
 
33
+ def logger
34
+ config.logger
35
+ end
36
+
33
37
  def ready
34
- puts "Creating subscriber..."
38
+ logger.info "Creating subscriber..."
35
39
  @subscriber = config.subscriber.new
36
40
 
37
41
  config.handlers.each do |handler_name|
38
- puts "Registering #{handler_name} handler..."
42
+ logger.info "Registering #{handler_name} handler..."
39
43
  @subscriber.register_handler(handler_name)
40
44
  end
41
45
  end
@@ -44,7 +48,7 @@ module DispatchRider
44
48
  kind = config.queue_kind
45
49
  info = config.queue_info
46
50
 
47
- puts "Setting #{kind} queue @ #{info.to_json} ..."
51
+ logger.info "Setting #{kind} queue @ #{info.to_json} ..."
48
52
  @subscriber.register_queue(kind, info)
49
53
  @subscriber.setup_demultiplexer(kind, config.error_handler)
50
54
  end
@@ -30,17 +30,38 @@ module DispatchRider
30
30
  end
31
31
 
32
32
  def process
33
- Signal.trap("QUIT") { demultiplexer.stop } # signal number: 3
34
- Signal.trap("TERM") { demultiplexer.stop } # signal number: 15
33
+ Signal.trap("QUIT") do
34
+ # signal number: 3
35
+ logger.info "Received SIGQUIT, stopping demultiplexer"
36
+ demultiplexer.stop
37
+ end
38
+
39
+ Signal.trap("TERM") do
40
+ # signal number: 15
41
+ logger.info "Received SIGTERM, stopping demultiplexer"
42
+ demultiplexer.stop
43
+ end
35
44
 
36
- # user interuption
37
- already_interupted = false
45
+ # user interruption
46
+ already_interrupted = false
38
47
  Signal.trap("INT") do
39
- already_interupted ? exit(0) : demultiplexer.stop
40
- already_interupted = true
48
+ if already_interrupted
49
+ logger.info "Received SIGINT second time, aborting"
50
+ exit(0)
51
+ else
52
+ logger.info "Received SIGINT first time, stopping demultiplexer"
53
+ demultiplexer.stop
54
+ end
55
+ already_interrupted = true
41
56
  end
42
57
 
43
58
  demultiplexer.start
44
59
  end
60
+
61
+ private
62
+
63
+ def logger
64
+ DispatchRider.config.logger
65
+ end
45
66
  end
46
67
  end
@@ -1,4 +1,4 @@
1
1
  # This file specifies the current version of the gem.
2
2
  module DispatchRider
3
- VERSION = "0.2.6"
3
+ VERSION = "0.2.7"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dispatch-rider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Suman Mukherjee
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-12-05 00:00:00.000000000 Z
14
+ date: 2013-12-10 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport