henchman 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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