rabbit-wq 1.5.0 → 1.6.0

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: 6d634abe252e6b867d154bf13a89c5f5d3ec3b3d
4
- data.tar.gz: 8ec4a5e769312855710472b4224486055760987e
3
+ metadata.gz: 0568de9c0fec913fcfd1095ff871c2950425caec
4
+ data.tar.gz: e518eaa0d76830ac505aeee415bc0fbf283447d4
5
5
  SHA512:
6
- metadata.gz: e9cb5f5bbe3b430c65338b61883a81216f09624239fba7dd1e47b5d6c38393bf06dce061e85dd48029f0cf4cf6f8655d2f5b20b774f9a3b2772b60d9011a189b
7
- data.tar.gz: a2b728021c002b7e14f8472940534c1c5db972d8a5845fd0d2326ccb6f761e639dae4415a8476fe21a09ac62fec443a2e1d45b8ca62c158ac1e3a2bdf6834757
6
+ metadata.gz: a3ebfaafb03242620189e60586d2444b1ef3ba07c1f9fa01026e68b66bb4e6a84b9ee2205345e6ce3dd08c8ee6a26bec3241aa6f33c096e1ab22bba5e7dbd883
7
+ data.tar.gz: 1f8f34bc53f4ac2e83a7db41a8cc018b65fb7785c8480075c50f81500c4347aa33d5f9c3e5a592e5a8e204324d935f67d71b87c831b6e4836ffcb14e63877ca1
data/README.md CHANGED
@@ -117,6 +117,30 @@ Called when an error is raised and either no retries were requested or are remai
117
117
 
118
118
  Called when an error is raised and a retry will be attempted.
119
119
 
120
+ ### Disabling a Worker
121
+
122
+ A worker can be disabled by overriding the #enabled? method.
123
+
124
+ class SomeWorker
125
+ include RabbitWQ::Worker
126
+
127
+ def enabled?
128
+ # some logic to determine enabled
129
+ end
130
+ end
131
+
132
+ By default, when a worker is disabled a log entry is created and the worker does no work and leaves hte work queue
133
+ system. In order to have the worker sent to the error queue if disabled, simply override the #error_on_disabled? method:
134
+
135
+ class SomeWorker
136
+ include RabbitWQ::Worker
137
+
138
+ def error_on_disabled?
139
+ true
140
+ end
141
+ end
142
+
143
+
120
144
  ### Logging
121
145
 
122
146
  RabbitWQ provides a work logger that is available within all workers. You must send a reference to self
@@ -20,7 +20,7 @@ module RabbitWQ
20
20
 
21
21
  worker = YAML::load( payload )
22
22
  info ANSI.yellow { "WORKER [#{worker.object_id}] " + worker.inspect }
23
- worker.call
23
+ handle_work( worker, payload )
24
24
  try_on_success_callback( worker )
25
25
  channel.ack delivery_info.delivery_tag
26
26
  rescue => e
@@ -29,6 +29,18 @@ module RabbitWQ
29
29
 
30
30
  protected
31
31
 
32
+ def handle_work( worker, payload )
33
+ unless worker.enabled?
34
+ if worker.error_on_disabled?
35
+ Work.enqueue_error_payload( payload, error: "Worker disabled" )
36
+ end
37
+ worker_info( worker, "Worker disabled" )
38
+ return
39
+ end
40
+
41
+ worker.call
42
+ end
43
+
32
44
  def handle_error( worker, e, channel, delivery_info, payload, metadata )
33
45
  headers = metadata[:headers]
34
46
 
@@ -1,3 +1,3 @@
1
1
  module RabbitWQ
2
- VERSION = "1.5.0"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -33,5 +33,15 @@ module RabbitWQ
33
33
  info "END #{self.class.name}"
34
34
  end
35
35
 
36
+ def enabled?
37
+ true
38
+ end
39
+
40
+ # When true, will place the worker in error queue
41
+ #
42
+ def error_on_disabled?
43
+ false
44
+ end
45
+
36
46
  end
37
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabbit-wq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - C. Jason Harrelson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-03 00:00:00.000000000 Z
11
+ date: 2014-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler