rabbit-wq 1.5.0 → 1.6.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.
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