bunny 0.7.13 → 0.8.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.
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