henchman 0.0.2 → 0.0.3

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.
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "henchman"
6
- s.version = "0.0.2"
6
+ s.version = "0.0.3"
7
7
  s.authors = ["Martin Bruse"]
8
8
  s.email = ["martin@oort.se"]
9
9
  s.homepage = "https://github.com/zond/henchman"
@@ -247,21 +247,21 @@ module Henchman
247
247
  # @param [String] queue_name the name of the queue to enqueue on.
248
248
  # @param [Object] message the message to enqueue.
249
249
  #
250
- def enqueue(queue_name, message)
251
- EM::Synchrony.sync(aenqueue(queue_name, message))
250
+ def enqueue(queue_name, message, headers = {})
251
+ EM::Synchrony.sync(aenqueue(queue_name, message, headers))
252
252
  end
253
253
 
254
254
  #
255
255
  # Enqueue a message asynchronously.
256
256
  #
257
- # @param (see #publish)
257
+ # @param (see #enqueue)
258
258
  #
259
259
  # @return [EM::Deferrable] a deferrable that will succeed when the publishing is done.
260
260
  #
261
- def aenqueue(queue_name, message)
261
+ def aenqueue(queue_name, message, headers = {})
262
262
  deferrable = EM::DefaultDeferrable.new
263
263
  with_direct_exchange do |exchange|
264
- exchange.publish(MultiJson.encode(message), :routing_key => queue_name) do
264
+ exchange.publish(MultiJson.encode(message), :headers => headers, :routing_key => queue_name) do
265
265
  deferrable.set_deferred_status :succeeded
266
266
  end
267
267
  end
@@ -274,8 +274,8 @@ module Henchman
274
274
  # @param [String] exchange_name the name of the exchange to publish on.
275
275
  # @param [Object] message the object to publish
276
276
  #
277
- def publish(exchange_name, message)
278
- EM::Synchrony.sync(apublish(exchange_name, message))
277
+ def publish(exchange_name, message, headers = {})
278
+ EM::Synchrony.sync(apublish(exchange_name, message, headers))
279
279
  end
280
280
 
281
281
  #
@@ -285,10 +285,10 @@ module Henchman
285
285
  #
286
286
  # @return [EM::Deferrable] a deferrable that will succeed when the publishing is done.
287
287
  #
288
- def apublish(exchange_name, message)
288
+ def apublish(exchange_name, message, headers = {})
289
289
  deferrable = EM::DefaultDeferrable.new
290
290
  with_fanout_exchange(exchange_name) do |exchange|
291
- exchange.publish(MultiJson.encode(message)) do
291
+ exchange.publish(MultiJson.encode(message), :headers => headers) do
292
292
  deferrable.set_deferred_status :succeeded
293
293
  end
294
294
  end
@@ -48,6 +48,13 @@ module Henchman
48
48
  @message = message
49
49
  end
50
50
 
51
+ #
52
+ # @return [String] the name of the queue the worker of this task listens to.
53
+ #
54
+ def queue_name
55
+ worker.queue_name
56
+ end
57
+
51
58
  #
52
59
  # Call this {::Henchman::Worker::Task}.
53
60
  #
@@ -34,6 +34,38 @@ describe Henchman do
34
34
  end
35
35
  end
36
36
 
37
+ it 'should allow enqueing of headers' do
38
+ val = rand(1 << 32)
39
+ found = nil
40
+ deferrable = EM::DefaultDeferrable.new
41
+ Henchman::Worker.new("test.queue") do
42
+ if headers.header[:headers]["val"] == val
43
+ found = val
44
+ deferrable.set_deferred_status :succeeded
45
+ end
46
+ nil
47
+ end.consume!
48
+ Henchman.enqueue("test.queue", {}, {:val => val})
49
+ EM::Synchrony.sync deferrable
50
+ found.should == val
51
+ end
52
+
53
+ it 'should allow publishing of headers' do
54
+ val = rand(1 << 32)
55
+ found = nil
56
+ deferrable = EM::DefaultDeferrable.new
57
+ Henchman::Worker.new("test.receiver") do
58
+ if headers.header[:headers]["val"] == val
59
+ found = val
60
+ deferrable.set_deferred_status :succeeded
61
+ end
62
+ nil
63
+ end.subscribe!
64
+ Henchman.publish("test.receiver", {}, {:val => val})
65
+ EM::Synchrony.sync deferrable
66
+ found.should == val
67
+ end
68
+
37
69
  it 'should consume jobs' do
38
70
  val = rand(1 << 32)
39
71
  found = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: henchman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: amqp
16
- requirement: &70283255941400 !ruby/object:Gem::Requirement
16
+ requirement: &70232597137660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70283255941400
24
+ version_requirements: *70232597137660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: em-synchrony
27
- requirement: &70283255940920 !ruby/object:Gem::Requirement
27
+ requirement: &70232597137180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70283255940920
35
+ version_requirements: *70232597137180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: multi_json
38
- requirement: &70283255940460 !ruby/object:Gem::Requirement
38
+ requirement: &70232597136720 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70283255940460
46
+ version_requirements: *70232597136720
47
47
  description: A maximally simple amqp wrapper
48
48
  email:
49
49
  - martin@oort.se