rabbit-wq 1.0.0 → 1.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 +26 -2
- data/lib/rabbit_wq/message_handler.rb +27 -5
- data/lib/rabbit_wq/server.rb +0 -2
- data/lib/rabbit_wq/version.rb +1 -1
- data/lib/rabbit_wq/work_logger.rb +0 -3
- data/lib/rabbit_wq/worker.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -88,11 +88,35 @@ Auto-scale will set up retries at the following intervals: 1 min, 5 mins, 15 min
|
|
88
88
|
worker = SomeWorker.new( 1 )
|
89
89
|
worker.work # same as RabbitWQ::Work.enqueue( worker )
|
90
90
|
|
91
|
-
###
|
91
|
+
### Success Callback
|
92
92
|
|
93
|
-
|
93
|
+
#### on_success
|
94
|
+
|
95
|
+
Called on success when defined on a worker.
|
96
|
+
|
97
|
+
|
98
|
+
### Error Handling
|
99
|
+
|
100
|
+
Once a worker has raised an exception and no retry attempts are remaining, the worker is placed on
|
94
101
|
the error queue with the exception type, message and backtraces.
|
95
102
|
|
103
|
+
#### Error Callbacks
|
104
|
+
|
105
|
+
There are several error callbacks that will be called if defined on a worker. Each error callback will receive
|
106
|
+
a single parameter, the error.
|
107
|
+
|
108
|
+
##### on_error
|
109
|
+
|
110
|
+
Called anytime an error is raised, including if a retry will be attempted.
|
111
|
+
|
112
|
+
##### on_final_error
|
113
|
+
|
114
|
+
Called when an error is raised and either no retries were requested or are remaining.
|
115
|
+
|
116
|
+
##### on_retryable_error
|
117
|
+
|
118
|
+
Called when an error is raised and a retry will be attempted.
|
119
|
+
|
96
120
|
### Logging
|
97
121
|
|
98
122
|
RabbitWQ provides a work logger that is available within all workers. You must send a reference to self
|
@@ -16,14 +16,12 @@ module RabbitWQ
|
|
16
16
|
channel = options[:channel]
|
17
17
|
delivery_info = options[:delivery_info]
|
18
18
|
metadata = options[:metadata]
|
19
|
-
#headers = metadata[:headers]
|
20
19
|
payload = options[:payload]
|
21
20
|
|
22
|
-
debug "PAYLOAD ARRIVED #{payload}"
|
23
|
-
|
24
21
|
worker = YAML::load( payload )
|
25
22
|
info ANSI.yellow { "WORKER [#{worker.object_id}] " + worker.inspect }
|
26
23
|
worker.call
|
24
|
+
try_on_success_callback( worker )
|
27
25
|
channel.ack delivery_info.delivery_tag
|
28
26
|
rescue => e
|
29
27
|
handle_error( worker, e, channel, delivery_info, payload, metadata )
|
@@ -50,15 +48,39 @@ module RabbitWQ
|
|
50
48
|
|
51
49
|
Work.enqueue_payload( payload, headers.merge( delay: retry_delay, attempt: attempt + 1 ).
|
52
50
|
merge( error: error_metadata ))
|
51
|
+
worker_error( worker, "ERROR WITH RETRY " + error_metadata.inspect )
|
52
|
+
try_on_error_callback( worker, e )
|
53
|
+
try_on_retryable_error_callback( worker, e )
|
53
54
|
channel.nack delivery_info.delivery_tag
|
54
55
|
return
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
58
59
|
Work.enqueue_error_payload( payload, error: error_metadata )
|
59
|
-
worker_error( worker, error_metadata.inspect )
|
60
|
+
worker_error( worker, "FINAL ERROR " + error_metadata.inspect )
|
61
|
+
try_on_error_callback( worker, e )
|
62
|
+
try_on_final_error_callback( worker, e )
|
60
63
|
channel.nack delivery_info.delivery_tag
|
61
|
-
|
64
|
+
end
|
65
|
+
|
66
|
+
def try_on_success_callback( worker )
|
67
|
+
return unless worker.respond_to?( :on_success )
|
68
|
+
worker.on_success
|
69
|
+
end
|
70
|
+
|
71
|
+
def try_on_error_callback( worker, e )
|
72
|
+
return unless worker.respond_to?( :on_error )
|
73
|
+
worker.on_error( e )
|
74
|
+
end
|
75
|
+
|
76
|
+
def try_on_retryable_error_callback( worker, e )
|
77
|
+
return unless worker.respond_to?( :on_retryable_error )
|
78
|
+
worker.on_retryable_error( e )
|
79
|
+
end
|
80
|
+
|
81
|
+
def try_on_final_error_callback( worker, e )
|
82
|
+
return unless worker.respond_to?( :on_final_error )
|
83
|
+
worker.on_final_error( e )
|
62
84
|
end
|
63
85
|
|
64
86
|
def requeue( channel, delivery_info, e=nil )
|
data/lib/rabbit_wq/server.rb
CHANGED
data/lib/rabbit_wq/version.rb
CHANGED
data/lib/rabbit_wq/worker.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabbit-wq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
12
|
+
date: 2014-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|