bunny 0.7.13 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/.gitignore +2 -2
  2. data/.travis.yml +7 -16
  3. data/CHANGELOG +3 -21
  4. data/Gemfile +2 -4
  5. data/README.textile +31 -9
  6. data/Rakefile +3 -3
  7. data/bunny.gemspec +6 -3
  8. data/examples/{simple_08.rb → simple.rb} +1 -1
  9. data/examples/{simple_ack_08.rb → simple_ack.rb} +1 -1
  10. data/examples/{simple_consumer_08.rb → simple_consumer.rb} +4 -4
  11. data/examples/{simple_fanout_08.rb → simple_fanout.rb} +1 -1
  12. data/examples/{simple_headers_08.rb → simple_headers.rb} +2 -2
  13. data/examples/{simple_publisher_09.rb → simple_publisher.rb} +1 -1
  14. data/examples/{simple_topic_09.rb → simple_topic.rb} +2 -2
  15. data/ext/amqp-0.9.1.json +1 -0
  16. data/ext/config.yml +3 -3
  17. data/ext/qparser.rb +9 -52
  18. data/lib/bunny/{client09.rb → client.rb} +34 -46
  19. data/lib/bunny/{exchange09.rb → exchange.rb} +16 -15
  20. data/lib/bunny/{queue09.rb → queue.rb} +26 -23
  21. data/lib/bunny/{subscription09.rb → subscription.rb} +11 -6
  22. data/lib/bunny/version.rb +1 -1
  23. data/lib/bunny.rb +15 -33
  24. data/lib/qrack/client.rb +31 -22
  25. data/lib/qrack/protocol/{protocol08.rb → protocol.rb} +2 -1
  26. data/lib/qrack/protocol/{spec09.rb → spec.rb} +8 -7
  27. data/lib/qrack/{qrack08.rb → qrack.rb} +4 -4
  28. data/lib/qrack/subscription.rb +58 -9
  29. data/lib/qrack/transport/{buffer08.rb → buffer.rb} +9 -1
  30. data/lib/qrack/transport/{frame08.rb → frame.rb} +7 -22
  31. data/spec/spec_09/amqp_url_spec.rb +1 -1
  32. data/spec/spec_09/bunny_spec.rb +11 -9
  33. data/spec/spec_09/connection_spec.rb +9 -4
  34. data/spec/spec_09/exchange_spec.rb +23 -25
  35. data/spec/spec_09/queue_spec.rb +33 -19
  36. metadata +71 -81
  37. checksums.yaml +0 -7
  38. data/examples/simple_09.rb +0 -32
  39. data/examples/simple_ack_09.rb +0 -35
  40. data/examples/simple_consumer_09.rb +0 -55
  41. data/examples/simple_fanout_09.rb +0 -41
  42. data/examples/simple_headers_09.rb +0 -42
  43. data/examples/simple_publisher_08.rb +0 -29
  44. data/examples/simple_topic_08.rb +0 -61
  45. data/ext/amqp-0.8.json +0 -616
  46. data/lib/bunny/channel09.rb +0 -39
  47. data/lib/bunny/client08.rb +0 -480
  48. data/lib/bunny/exchange08.rb +0 -177
  49. data/lib/bunny/queue08.rb +0 -403
  50. data/lib/bunny/subscription08.rb +0 -87
  51. data/lib/qrack/protocol/protocol09.rb +0 -135
  52. data/lib/qrack/protocol/spec08.rb +0 -828
  53. data/lib/qrack/qrack09.rb +0 -20
  54. data/lib/qrack/transport/buffer09.rb +0 -305
  55. data/lib/qrack/transport/frame09.rb +0 -97
  56. data/spec/spec_08/bunny_spec.rb +0 -75
  57. data/spec/spec_08/connection_spec.rb +0 -24
  58. data/spec/spec_08/exchange_spec.rb +0 -175
  59. data/spec/spec_08/queue_spec.rb +0 -239
  60. data/spec/spec_helper.rb +0 -8
  61. /data/lib/bunny/{channel08.rb → channel.rb} +0 -0
@@ -8,12 +8,12 @@
8
8
  # If this is not the case, please change the 'Bunny.new' call below to include
9
9
  # the relevant arguments e.g. @b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
10
10
 
11
- require_relative "../spec_helper"
11
+ require "bunny"
12
12
 
13
13
  describe 'Queue' do
14
14
 
15
15
  before(:each) do
16
- @b = Bunny.new(:spec => '09')
16
+ @b = Bunny.new
17
17
  @b.start
18
18
 
19
19
  @default_exchange = @b.exchange("")
@@ -61,10 +61,10 @@ describe 'Queue' do
61
61
  q.unbind(exch, :nowait => true).should == :unbind_ok
62
62
  end
63
63
 
64
- it "should not raise an error if unbinding from a non-existent exchange" do
64
+ it "should raise an error if unbinding from a non-existent exchange" do
65
65
  q = @b.queue('test1')
66
- q.unbind('bogus').should == :unbind_ok
67
- @b.channel.active.should == true
66
+ lambda {q.unbind('bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
67
+ @b.channel.active.should == false
68
68
  end
69
69
 
70
70
  it "should be able to unbind from an exchange" do
@@ -78,12 +78,24 @@ describe 'Queue' do
78
78
  @default_exchange.publish('This is a test message', :key => 'test1')
79
79
  msg = q.pop()
80
80
  msg.should be_an_instance_of(Hash)
81
- msg[:header].should be_an_instance_of(Bunny::Protocol09::Header)
81
+ msg[:header].should be_an_instance_of(Bunny::Protocol::Header)
82
82
  msg[:payload].should == 'This is a test message'
83
83
  msg[:delivery_details].should be_an_instance_of(Hash)
84
84
  message_count(q).should == 0
85
85
  end
86
86
 
87
+ it "should be able to send reply_to, correlation_id and user_id headers " do
88
+ q = @b.queue('test1')
89
+ @default_exchange.publish('This is a test message', :key => 'test1',
90
+ :reply_to => 'test_reply_to',
91
+ :correlation_id => '987654',
92
+ :user_id => 'guest')
93
+ msg = q.pop()
94
+ msg[:header].properties[:reply_to].should == 'test_reply_to'
95
+ msg[:header].properties[:correlation_id].should == '987654'
96
+ msg[:header].properties[:user_id].should == 'guest'
97
+ end
98
+
87
99
  it "should be able to pop a message and just get the payload" do
88
100
  q = @b.queue('test1')
89
101
  @default_exchange.publish('This is another test message', :key => 'test1')
@@ -100,15 +112,6 @@ describe 'Queue' do
100
112
  msg.should == lg_msg
101
113
  end
102
114
 
103
- it "should be able to send and receive messages where body length is an exact multiple of frame_max minus framing bytes" do
104
- limit = @b.frame_max-8
105
- q = @b.queue('test1')
106
- lg_msg = 'a' * (5*limit)
107
- @default_exchange.publish(lg_msg, :key => 'test1')
108
- msg = q.pop[:payload]
109
- msg.should == lg_msg
110
- end
111
-
112
115
  it "should be able call a block when popping a message" do
113
116
  q = @b.queue('test1')
114
117
  @default_exchange.publish('This is another test message', :key => 'test1')
@@ -164,10 +167,10 @@ describe 'Queue' do
164
167
  q.purge.should == :purge_ok
165
168
  end
166
169
 
167
- it "should not close the connections when deleting a non existent queue" do
170
+ it "should raise an error when delete fails" do
168
171
  q = @b.queue('test1')
169
- q.delete(:queue => 'bogus').should == :delete_ok
170
- @b.channel.active.should == true
172
+ lambda {q.delete(:queue => 'bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
173
+ @b.channel.active.should == false
171
174
  end
172
175
 
173
176
  it "should pass correct block parameters through on subscribe" do
@@ -175,7 +178,7 @@ describe 'Queue' do
175
178
  @default_exchange.publish("messages pop'n", :key => 'test1')
176
179
 
177
180
  q.subscribe do |msg|
178
- msg[:header].should be_an_instance_of Qrack::Protocol09::Header
181
+ msg[:header].should be_an_instance_of Qrack::Protocol::Header
179
182
  msg[:payload].should == "messages pop'n"
180
183
  msg[:delivery_details].should_not be_nil
181
184
 
@@ -183,6 +186,17 @@ describe 'Queue' do
183
186
  break
184
187
  end
185
188
  end
189
+
190
+ specify "subscribe method should support cancellation through a cancellator IO object" do
191
+ q = @b.queue('test1')
192
+ a, b = IO.pipe
193
+ b.close
194
+ block_called = false
195
+ q.subscribe(:cancellator => a) do |msg|
196
+ block_called = true
197
+ end
198
+ block_called.should be_false
199
+ end
186
200
 
187
201
  it "should finish processing subscription messages if break is called in block" do
188
202
  q = @b.queue('test1')
metadata CHANGED
@@ -1,134 +1,124 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bunny
3
- version: !ruby/object:Gem::Version
4
- version: 0.7.13
3
+ version: !ruby/object:Gem::Version
4
+ hash: 63
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 8
9
+ - 0
10
+ version: 0.8.0
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Chris Duncan
8
14
  - Eric Lindvall
9
15
  - Jakub Stastny aka botanicus
10
16
  - Michael S. Klishin
11
17
  - Stefan Kaes
12
- autorequire:
18
+ autorequire:
13
19
  bindir: bin
14
20
  cert_chain: []
15
- date: 2023-03-26 00:00:00.000000000 Z
21
+
22
+ date: 2012-06-23 00:00:00 Z
16
23
  dependencies: []
17
- description: A synchronous Ruby AMQP client that enables interaction with AMQP-compliant
18
- brokers.
19
- email:
24
+
25
+ description: A synchronous Ruby AMQP client that enables interaction with AMQP-compliant brokers.
26
+ email:
20
27
  - celldee@gmail.com
21
28
  - eric@5stops.com
22
29
  - stastny@101ideas.cz
23
30
  - michael@novemberain.com
24
31
  - skaes@railsexpress.de
25
32
  executables: []
33
+
26
34
  extensions: []
27
- extra_rdoc_files:
35
+
36
+ extra_rdoc_files:
28
37
  - README.textile
29
- files:
30
- - ".gitignore"
31
- - ".rspec"
32
- - ".travis.yml"
33
- - ".yardopts"
38
+ files:
39
+ - .gitignore
40
+ - .rspec
41
+ - .travis.yml
42
+ - .yardopts
34
43
  - CHANGELOG
35
44
  - Gemfile
36
45
  - LICENSE
37
46
  - README.textile
38
47
  - Rakefile
39
48
  - bunny.gemspec
40
- - examples/simple_08.rb
41
- - examples/simple_09.rb
42
- - examples/simple_ack_08.rb
43
- - examples/simple_ack_09.rb
44
- - examples/simple_consumer_08.rb
45
- - examples/simple_consumer_09.rb
46
- - examples/simple_fanout_08.rb
47
- - examples/simple_fanout_09.rb
48
- - examples/simple_headers_08.rb
49
- - examples/simple_headers_09.rb
50
- - examples/simple_publisher_08.rb
51
- - examples/simple_publisher_09.rb
52
- - examples/simple_topic_08.rb
53
- - examples/simple_topic_09.rb
54
- - ext/amqp-0.8.json
49
+ - examples/simple.rb
50
+ - examples/simple_ack.rb
51
+ - examples/simple_consumer.rb
52
+ - examples/simple_fanout.rb
53
+ - examples/simple_headers.rb
54
+ - examples/simple_publisher.rb
55
+ - examples/simple_topic.rb
55
56
  - ext/amqp-0.9.1.json
56
57
  - ext/config.yml
57
58
  - ext/qparser.rb
58
59
  - lib/bunny.rb
59
- - lib/bunny/channel08.rb
60
- - lib/bunny/channel09.rb
61
- - lib/bunny/client08.rb
62
- - lib/bunny/client09.rb
60
+ - lib/bunny/channel.rb
61
+ - lib/bunny/client.rb
63
62
  - lib/bunny/consumer.rb
64
- - lib/bunny/exchange08.rb
65
- - lib/bunny/exchange09.rb
66
- - lib/bunny/queue08.rb
67
- - lib/bunny/queue09.rb
68
- - lib/bunny/subscription08.rb
69
- - lib/bunny/subscription09.rb
63
+ - lib/bunny/exchange.rb
64
+ - lib/bunny/queue.rb
65
+ - lib/bunny/subscription.rb
70
66
  - lib/bunny/system_timer.rb
71
67
  - lib/bunny/version.rb
72
68
  - lib/qrack/amq-client-url.rb
73
69
  - lib/qrack/channel.rb
74
70
  - lib/qrack/client.rb
75
71
  - lib/qrack/errors.rb
76
- - lib/qrack/protocol/protocol08.rb
77
- - lib/qrack/protocol/protocol09.rb
78
- - lib/qrack/protocol/spec08.rb
79
- - lib/qrack/protocol/spec09.rb
80
- - lib/qrack/qrack08.rb
81
- - lib/qrack/qrack09.rb
72
+ - lib/qrack/protocol/protocol.rb
73
+ - lib/qrack/protocol/spec.rb
74
+ - lib/qrack/qrack.rb
82
75
  - lib/qrack/queue.rb
83
76
  - lib/qrack/subscription.rb
84
- - lib/qrack/transport/buffer08.rb
85
- - lib/qrack/transport/buffer09.rb
86
- - lib/qrack/transport/frame08.rb
87
- - lib/qrack/transport/frame09.rb
88
- - spec/spec_08/bunny_spec.rb
89
- - spec/spec_08/connection_spec.rb
90
- - spec/spec_08/exchange_spec.rb
91
- - spec/spec_08/queue_spec.rb
77
+ - lib/qrack/transport/buffer.rb
78
+ - lib/qrack/transport/frame.rb
92
79
  - spec/spec_09/amqp_url_spec.rb
93
80
  - spec/spec_09/bunny_spec.rb
94
81
  - spec/spec_09/connection_spec.rb
95
82
  - spec/spec_09/exchange_spec.rb
96
83
  - spec/spec_09/queue_spec.rb
97
- - spec/spec_helper.rb
98
84
  homepage: http://github.com/ruby-amqp/bunny
99
- licenses:
100
- - MIT
101
- metadata: {}
102
- post_install_message: "[\e[32mVersion 0.7.11\e[0m] support boolean values in message
103
- headers\n"
104
- rdoc_options:
105
- - "--main"
85
+ licenses: []
86
+
87
+ post_install_message: "[\e[32mVersion 0.8.0\e[0m] AMQP 0.8 client is removed. Bunny is an AMQP 0.9.1 client only now.\n"
88
+ rdoc_options:
89
+ - --main
106
90
  - README.rdoc
107
- require_paths:
91
+ require_paths:
108
92
  - lib
109
- required_ruby_version: !ruby/object:Gem::Requirement
110
- requirements:
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
111
96
  - - ">="
112
- - !ruby/object:Gem::Version
113
- version: '0'
114
- required_rubygems_version: !ruby/object:Gem::Requirement
115
- requirements:
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
116
105
  - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
106
+ - !ruby/object:Gem::Version
107
+ hash: 3
108
+ segments:
109
+ - 0
110
+ version: "0"
119
111
  requirements: []
120
- rubygems_version: 3.4.6
121
- signing_key:
122
- specification_version: 4
123
- summary: Synchronous Ruby AMQP 0.9.1 client
124
- test_files:
125
- - spec/spec_08/bunny_spec.rb
126
- - spec/spec_08/connection_spec.rb
127
- - spec/spec_08/exchange_spec.rb
128
- - spec/spec_08/queue_spec.rb
112
+
113
+ rubyforge_project: bunny-amqp
114
+ rubygems_version: 1.8.15
115
+ signing_key:
116
+ specification_version: 3
117
+ summary: Synchronous Ruby AMQP 0.8.0 client
118
+ test_files:
129
119
  - spec/spec_09/amqp_url_spec.rb
130
120
  - spec/spec_09/bunny_spec.rb
131
121
  - spec/spec_09/connection_spec.rb
132
122
  - spec/spec_09/exchange_spec.rb
133
123
  - spec/spec_09/queue_spec.rb
134
- - spec/spec_helper.rb
124
+ has_rdoc: true
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA256:
3
- metadata.gz: 57852c2972d82a8c8a9742026c86d08bf3c7eb62486720fdff700bf86bbd1a6d
4
- data.tar.gz: 64698a92d4a10ef741d965d5688bb7c5ca8a719ef4372616f59b35e6625afd6d
5
- SHA512:
6
- metadata.gz: af605621674f7d907ae4b8ce550dd178d95b9337e53cd7d4b36285b2060ce1014ee923357f80e74e0986a337388e131d20f7b1702788a4c2bbd38efb0b0303d6
7
- data.tar.gz: 96378e392f16a5429fd690b1f9ce4c6c996c1f573a77bc0cbedce701279cb80969bf049219970a6503ee98dcafc9c67dc584bac8c8a2f59e9e5c166b2aee155b
@@ -1,32 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # simple_09.rb
4
-
5
- # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
6
- # and that it is running on 'localhost'.
7
-
8
- # If this is not the case, please change the 'Bunny.new' call below to include
9
- # the relevant arguments e.g. b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
10
-
11
- $:.unshift File.dirname(__FILE__) + '/../lib'
12
-
13
- require 'bunny'
14
-
15
- b = Bunny.new(:logging => true, :spec => '09')
16
-
17
- # start a communication session with the amqp server
18
- b.start
19
-
20
- # declare a queue
21
- q = b.queue('test1')
22
-
23
- # publish a message to the queue
24
- q.publish('➸ Hello everybody ☺!')
25
-
26
- # get message from the queue
27
- msg = q.pop[:payload]
28
-
29
- puts 'This is the message: ' + msg + "\n\n"
30
-
31
- # close the client connection
32
- b.stop
@@ -1,35 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # simple_ack_09.rb
4
-
5
- # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
6
- # and that it is running on 'localhost'.
7
-
8
- # If this is not the case, please change the 'Bunny.new' call below to include
9
- # the relevant arguments e.g. b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
10
-
11
- $:.unshift File.dirname(__FILE__) + '/../lib'
12
-
13
- require 'bunny'
14
-
15
- b = Bunny.new(:logging => true, :spec => '09')
16
-
17
- # start a communication session with the amqp server
18
- b.start
19
-
20
- # declare a queue
21
- q = b.queue('test1')
22
-
23
- # publish a message to the queue
24
- q.publish('Testing acknowledgements')
25
-
26
- # get message from the queue
27
- msg = q.pop(:ack => true)[:payload]
28
-
29
- # acknowledge receipt of message
30
- q.ack
31
-
32
- puts 'This is the message: ' + msg + "\n\n"
33
-
34
- # close the client connection
35
- b.stop
@@ -1,55 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # simple_consumer_09.rb
4
-
5
- # N.B. To be used in conjunction with simple_publisher.rb
6
-
7
- # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
8
- # and that it is running on 'localhost'.
9
-
10
- # If this is not the case, please change the 'Bunny.new' call below to include
11
- # the relevant arguments e.g. b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
12
-
13
- # How this example works
14
- #=======================
15
- #
16
- # Open up two console windows start this program in one of them by typing -
17
- #
18
- # ruby simple_consumer_09.rb
19
- #
20
- # Then switch to the other console window and type -
21
- #
22
- # ruby simple_publisher_09.rb
23
- #
24
- # A message will be printed out by the simple_consumer and it will wait for the next message
25
- # until the timeout interval is reached.
26
- #
27
- # Run simple_publisher as many times as you like. When you want the program to stop just stop
28
- # sending messages and the subscribe loop will timeout after 30 seconds, the program will
29
- # unsubscribe from the queue and close the connection to the server.
30
-
31
- $:.unshift File.dirname(__FILE__) + '/../lib'
32
-
33
- require 'bunny'
34
-
35
- b = Bunny.new(:logging => true, :spec => '09')
36
-
37
- # start a communication session with the amqp server
38
- b.start
39
-
40
- # create/get queue
41
- q = b.queue('po_box')
42
-
43
- # create/get exchange
44
- exch = b.exchange('sorting_room')
45
-
46
- # bind queue to exchange
47
- q.bind(exch, :key => 'fred')
48
-
49
- # subscribe to queue
50
- q.subscribe(:consumer_tag => 'testtag1', :timeout => 30) do |msg|
51
- puts "#{q.subscription.message_count}: #{msg[:payload]}"
52
- end
53
-
54
- # Close client
55
- b.stop
@@ -1,41 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # simple_fanout_09.rb
4
-
5
- # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
6
- # and that it is running on 'localhost'.
7
-
8
- # If this is not the case, please change the 'Bunny.new' call below to include
9
- # the relevant arguments e.g. b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
10
-
11
- $:.unshift File.dirname(__FILE__) + '/../lib'
12
-
13
- require 'bunny'
14
-
15
- b = Bunny.new(:logging => true, :spec => '09')
16
-
17
- # start a communication session with the amqp server
18
- b.start
19
-
20
- # declare queues
21
- q1 = b.queue('test_fan1')
22
- q2 = b.queue('test_fan2')
23
-
24
- # create a fanout exchange
25
- exch = b.exchange('test_fan', :type => :fanout)
26
-
27
- # bind the queues to the exchange
28
- q1.bind(exch)
29
- q2.bind(exch)
30
-
31
- # publish a message to the exchange
32
- exch.publish('This message will be fanned out')
33
-
34
- # get message from the queues
35
- msg = q1.pop[:payload]
36
- puts 'This is the message from q1: ' + msg + "\n\n"
37
- msg = q2.pop[:payload]
38
- puts 'This is the message from q2: ' + msg + "\n\n"
39
-
40
- # close the client connection
41
- b.stop
@@ -1,42 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # simple_headers_09.rb
4
-
5
- # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
6
- # and that it is running on 'localhost'.
7
-
8
- # If this is not the case, please change the 'Bunny.new' call below to include
9
- # the relevant arguments e.g. b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
10
-
11
- $:.unshift File.dirname(__FILE__) + '/../lib'
12
-
13
- require 'bunny'
14
-
15
- b = Bunny.new(:spec => '09')
16
-
17
- # start a communication session with the amqp server
18
- b.start
19
-
20
- # declare queues
21
- q = b.queue('header_q1')
22
-
23
- # create a headers exchange
24
- header_exch = b.exchange('header_exch', :type => :headers)
25
-
26
- # bind the queue to the exchange
27
- q.bind(header_exch, :arguments => {'h1'=>'a','x-match'=>'all'})
28
-
29
- # publish messages to the exchange
30
- header_exch.publish('Headers test msg 1', :headers => {'h1'=>'a'})
31
- header_exch.publish('Headers test msg 2', :headers => {'h1'=>'z'})
32
-
33
-
34
- # get messages from the queue - should only be msg 1 that got through
35
- msg = ""
36
- until msg == :queue_empty do
37
- msg = q.pop[:payload]
38
- puts 'This is a message from the header_q1 queue: ' + msg + "\n" unless msg == :queue_empty
39
- end
40
-
41
- # close the client connection
42
- b.stop
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # simple_publisher_08.rb
4
-
5
- # N.B. To be used in conjunction with simple_consumer_08.rb. See simple_consumer.rb for explanation.
6
-
7
- # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
8
- # and that it is running on 'localhost'.
9
-
10
- # If this is not the case, please change the 'Bunny.new' call below to include
11
- # the relevant arguments e.g. b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
12
-
13
- $:.unshift File.dirname(__FILE__) + '/../lib'
14
-
15
- require 'bunny'
16
-
17
- b = Bunny.new(:logging => true)
18
-
19
- # start a communication session with the amqp server
20
- b.start
21
-
22
- # create/get exchange
23
- exch = b.exchange('sorting_room')
24
-
25
- # publish message to exchange
26
- exch.publish('This is a message from the publisher', :key => 'fred')
27
-
28
- # message should now be picked up by the consumer so we can stop
29
- b.stop
@@ -1,61 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # simple_topic_08.rb
4
-
5
- # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
6
- # and that it is running on 'localhost'.
7
-
8
- # If this is not the case, please change the 'Bunny.new' call below to include
9
- # the relevant arguments e.g. b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
10
-
11
- $:.unshift File.dirname(__FILE__) + '/../lib'
12
-
13
- require 'bunny'
14
-
15
- b = Bunny.new
16
-
17
- # start a communication session with the amqp server
18
- b.start
19
-
20
- # declare queues
21
- soccer = b.queue('topic_soccer')
22
- cricket = b.queue('topic_cricket')
23
- rugby = b.queue('topic_rugby')
24
- allsport = b.queue('topic_allsport')
25
-
26
- # create a topic exchange
27
- sports_results = b.exchange('sports_results', :type => :topic)
28
-
29
- # bind the queues to the exchange
30
- soccer.bind(sports_results, :key => 'soccer.*')
31
- cricket.bind(sports_results, :key => 'cricket.*')
32
- rugby.bind(sports_results, :key => 'rugby.*')
33
- allsport.bind(sports_results, :key => '*.result')
34
-
35
- # publish messages to the exchange
36
- sports_results.publish('Manchester United 1 : Hull City 4', :key => 'soccer.result')
37
- sports_results.publish('England beat Australia by 5 wickets in first test', :key => 'cricket.result')
38
- sports_results.publish('British Lions 15 : South Africa 12', :key => 'rugby.result')
39
-
40
- # get message from the queues
41
-
42
- # soccer queue got the soccer message
43
- msg = soccer.pop[:payload]
44
- puts 'This is a message from the soccer q: ' + msg + "\n\n"
45
-
46
- # cricket queue got the cricket message
47
- msg = cricket.pop[:payload]
48
- puts 'This is a message from the cricket q: ' + msg + "\n\n"
49
-
50
- # rugby queue got the rugby message
51
- msg = rugby.pop[:payload]
52
- puts 'This is a message from the rugby q: ' + msg + "\n\n"
53
-
54
- # allsport queue got all of the messages
55
- until msg == :queue_empty do
56
- msg = allsport.pop[:payload]
57
- puts 'This is a message from the allsport q: ' + msg + "\n\n" unless msg == :queue_empty
58
- end
59
-
60
- # close the client connection
61
- b.stop