bunny 0.7.9 → 0.7.10
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 +7 -0
- data/.gitignore +1 -0
- data/CHANGELOG +8 -0
- data/Gemfile +3 -1
- data/lib/bunny/client08.rb +8 -0
- data/lib/bunny/client09.rb +8 -0
- data/lib/bunny/exchange08.rb +7 -1
- data/lib/bunny/exchange09.rb +7 -1
- data/lib/bunny/version.rb +1 -1
- data/lib/qrack/client.rb +4 -1
- data/spec/spec_08/bunny_spec.rb +4 -6
- data/spec/spec_08/exchange_spec.rb +7 -10
- data/spec/spec_08/queue_spec.rb +6 -12
- data/spec/spec_09/bunny_spec.rb +4 -6
- data/spec/spec_09/exchange_spec.rb +7 -10
- data/spec/spec_09/queue_spec.rb +6 -6
- metadata +32 -48
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 072792fbee28a7ddb863068d4d50082734814fcf
|
4
|
+
data.tar.gz: a7c720f93a3b196be83350f0694a15191ecf8148
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 20d9da18623a97f363ee15ed57f26b433e4a9328769e2e8993c4c53f33a63e256438f66487c74581ce284dac2729e22dddd787446b605ad965bc40e9382569f7
|
7
|
+
data.tar.gz: 8d91cc821840d51811767541b5637246bbc098a71923cd52c3773044519dd5fb000a12532ca4761435e0415e76089d2cf09cad37ccd82ed9038450cd9fe4a1bf
|
data/.gitignore
CHANGED
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
= Version 0.7.10
|
2
|
+
|
3
|
+
* handle messages larger than frame_max correctly
|
4
|
+
|
5
|
+
= Version 0.7.9
|
6
|
+
|
7
|
+
* parse a few more AMQ datatypes (related to federation plugin)
|
8
|
+
|
1
9
|
= Version 0.7.8
|
2
10
|
|
3
11
|
* test suite cleanup (eliminated some race conditions related to queue.message_count)
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
source
|
3
|
+
source 'https://rubygems.org'
|
4
4
|
|
5
5
|
# Use local clones if possible.
|
6
6
|
# If you want to use your local copy, just symlink it to vendor.
|
@@ -30,6 +30,8 @@ group :development do
|
|
30
30
|
gem "RedCloth", :platform => :mri
|
31
31
|
|
32
32
|
gem "changelog"
|
33
|
+
|
34
|
+
gem "byebug"
|
33
35
|
end
|
34
36
|
|
35
37
|
group :test do
|
data/lib/bunny/client08.rb
CHANGED
@@ -189,6 +189,8 @@ Exchange
|
|
189
189
|
method = frame.payload
|
190
190
|
|
191
191
|
if method.is_a?(Qrack::Protocol::Connection::Tune)
|
192
|
+
@frame_max = method.frame_max if method.frame_max > 0 && method.frame_max < @frame_max
|
193
|
+
@channel_max = method.channel_max if method.channel_max > 0 && method.channel_max < @channel_max
|
192
194
|
send_frame(Qrack::Protocol::Connection::TuneOk.new( :channel_max => @channel_max, :frame_max => @frame_max, :heartbeat => @heartbeat))
|
193
195
|
end
|
194
196
|
|
@@ -462,6 +464,12 @@ using the Commit or Rollback methods.
|
|
462
464
|
:select_ok
|
463
465
|
end
|
464
466
|
|
467
|
+
protected
|
468
|
+
|
469
|
+
def check_returned_message(method)
|
470
|
+
check_response(method, Qrack::Protocol::Basic::Return, "Expected a returned message")
|
471
|
+
end
|
472
|
+
|
465
473
|
private
|
466
474
|
|
467
475
|
def buffer
|
data/lib/bunny/client09.rb
CHANGED
@@ -169,6 +169,8 @@ module Bunny
|
|
169
169
|
method = frame.payload
|
170
170
|
|
171
171
|
if method.is_a?(Qrack::Protocol09::Connection::Tune)
|
172
|
+
@frame_max = method.frame_max if method.frame_max > 0 && method.frame_max < @frame_max
|
173
|
+
@channel_max = method.channel_max if method.channel_max > 0 && method.channel_max < @channel_max
|
172
174
|
send_frame(Qrack::Protocol09::Connection::TuneOk.new(:channel_max => @channel_max, :frame_max => @frame_max, :heartbeat => @heartbeat))
|
173
175
|
end
|
174
176
|
|
@@ -364,6 +366,12 @@ module Bunny
|
|
364
366
|
:select_ok
|
365
367
|
end
|
366
368
|
|
369
|
+
protected
|
370
|
+
|
371
|
+
def check_returned_message(method)
|
372
|
+
check_response(method, Qrack::Protocol09::Basic::Return, "Expected a returned message")
|
373
|
+
end
|
374
|
+
|
367
375
|
private
|
368
376
|
|
369
377
|
def buffer
|
data/lib/bunny/exchange08.rb
CHANGED
@@ -161,7 +161,13 @@ nil
|
|
161
161
|
:priority => 0
|
162
162
|
}.merge(opts)
|
163
163
|
)
|
164
|
-
|
164
|
+
|
165
|
+
limit = @client.frame_max - 8
|
166
|
+
i = 0
|
167
|
+
while i < data.bytesize
|
168
|
+
out << Qrack::Transport::Body.new(data.byteslice(i, limit))
|
169
|
+
i += limit
|
170
|
+
end
|
165
171
|
|
166
172
|
client.send_frame(*out)
|
167
173
|
end
|
data/lib/bunny/exchange09.rb
CHANGED
@@ -149,7 +149,13 @@ module Bunny
|
|
149
149
|
:priority => 0
|
150
150
|
}.merge(opts)
|
151
151
|
)
|
152
|
-
|
152
|
+
|
153
|
+
limit = @client.frame_max - 8
|
154
|
+
i = 0
|
155
|
+
while i < data.bytesize
|
156
|
+
out << Qrack::Transport09::Body.new(data.byteslice(i, limit))
|
157
|
+
i += limit
|
158
|
+
end
|
153
159
|
|
154
160
|
client.send_frame(*out)
|
155
161
|
end
|
data/lib/bunny/version.rb
CHANGED
data/lib/qrack/client.rb
CHANGED
@@ -20,7 +20,7 @@ module Qrack
|
|
20
20
|
CONNECT_TIMEOUT = 5.0
|
21
21
|
RETRY_DELAY = 10.0
|
22
22
|
|
23
|
-
attr_reader :status, :host, :vhost, :port, :logging, :spec, :heartbeat
|
23
|
+
attr_reader :status, :host, :vhost, :port, :logging, :spec, :heartbeat, :frame_max
|
24
24
|
attr_accessor :channel, :logfile, :exchanges, :queues, :channels, :message_in, :message_out, :connecting
|
25
25
|
|
26
26
|
# Temporary hack to make Bunny 0.7 work with port number in AMQP URL.
|
@@ -142,6 +142,9 @@ module Qrack
|
|
142
142
|
end
|
143
143
|
|
144
144
|
method = frame.payload
|
145
|
+
# at this point, we can receive a channel or connection close, which we need to check for
|
146
|
+
check_returned_message(method)
|
147
|
+
|
145
148
|
header = next_payload
|
146
149
|
|
147
150
|
# If maximum frame size is smaller than message payload body then message
|
data/spec/spec_08/bunny_spec.rb
CHANGED
@@ -63,15 +63,13 @@ describe Bunny do
|
|
63
63
|
@b.queues.has_key?('test1').should be(true)
|
64
64
|
end
|
65
65
|
|
66
|
-
# Current RabbitMQ has not implemented some functionality
|
67
|
-
it "should raise an error if setting of QoS fails" do
|
68
|
-
lambda { @b.qos(:global => true) }.should raise_error(Bunny::ForcedConnectionCloseError)
|
69
|
-
@b.status.should == :not_connected
|
70
|
-
end
|
71
|
-
|
72
66
|
it "should be able to set QoS" do
|
73
67
|
@b.qos.should == :qos_ok
|
74
68
|
end
|
75
69
|
|
70
|
+
it "should be able to set QoS (with global:true)" do
|
71
|
+
@b.qos(:global => true).should == :qos_ok
|
72
|
+
end
|
73
|
+
|
76
74
|
end
|
77
75
|
|
@@ -137,25 +137,22 @@ describe 'Exchange' do
|
|
137
137
|
|
138
138
|
it "should be able to return an undeliverable message" do
|
139
139
|
exch = @b.exchange('return_exch')
|
140
|
-
exch.publish('This message should be undeliverable', :
|
140
|
+
exch.publish('This message should be undeliverable', :mandatory => true)
|
141
141
|
ret_msg = @b.returned_message
|
142
142
|
ret_msg.should be_an_instance_of(Hash)
|
143
143
|
ret_msg[:payload].should == 'This message should be undeliverable'
|
144
144
|
end
|
145
145
|
|
146
|
-
it "should be able to
|
146
|
+
it "should be able to handle connection close on trying to publish with immediate=true" do
|
147
147
|
exch = @b.exchange('return_exch')
|
148
|
-
|
149
|
-
|
150
|
-
ret_msg = @b.returned_message
|
151
|
-
ret_msg.should be_an_instance_of(Hash)
|
152
|
-
ret_msg[:payload].should == lg_msg
|
148
|
+
exch.publish('This message should force a connection close', :immediate => true)
|
149
|
+
lambda { @b.returned_message }.should raise_error(Bunny::ForcedConnectionCloseError)
|
153
150
|
end
|
154
151
|
|
155
|
-
it "should
|
152
|
+
it "should not close the connection when trying to delete a non existent exchange" do
|
156
153
|
exch = @b.exchange('direct_exchange')
|
157
|
-
|
158
|
-
@b.channel.active.should ==
|
154
|
+
exch.delete(:exchange => 'bogus_ex').should == :delete_ok
|
155
|
+
@b.channel.active.should == true
|
159
156
|
end
|
160
157
|
|
161
158
|
it "should be able to be deleted" do
|
data/spec/spec_08/queue_spec.rb
CHANGED
@@ -45,12 +45,6 @@ describe 'Queue' do
|
|
45
45
|
q.bind(exch, :nowait => true).should == :bind_ok
|
46
46
|
end
|
47
47
|
|
48
|
-
it "should raise an error when trying to bind to a non-existent exchange" do
|
49
|
-
q = @b.queue('test1')
|
50
|
-
lambda {q.bind('bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
|
51
|
-
@b.channel.active.should == false
|
52
|
-
end
|
53
|
-
|
54
48
|
it "should be able to bind to an existing exchange" do
|
55
49
|
exch = @b.exchange('direct_exch')
|
56
50
|
q = @b.queue('test1')
|
@@ -63,10 +57,10 @@ describe 'Queue' do
|
|
63
57
|
q.unbind(exch, :nowait => true).should == :unbind_ok
|
64
58
|
end
|
65
59
|
|
66
|
-
it "should raise an error if unbinding from a non-existent exchange" do
|
60
|
+
it "should not raise an error if unbinding from a non-existent exchange" do
|
67
61
|
q = @b.queue('test1')
|
68
|
-
|
69
|
-
@b.channel.active.should ==
|
62
|
+
q.unbind('bogus').should == :unbind_ok
|
63
|
+
@b.channel.active.should == true
|
70
64
|
end
|
71
65
|
|
72
66
|
it "should be able to unbind from an existing exchange" do
|
@@ -171,10 +165,10 @@ describe 'Queue' do
|
|
171
165
|
q.purge.should == :purge_ok
|
172
166
|
end
|
173
167
|
|
174
|
-
it "should
|
168
|
+
it "should not close the connections when deleting a non existent queue" do
|
175
169
|
q = @b.queue('test1')
|
176
|
-
|
177
|
-
@b.channel.active.should ==
|
170
|
+
q.delete(:queue => 'bogus').should == :delete_ok
|
171
|
+
@b.channel.active.should == true
|
178
172
|
end
|
179
173
|
|
180
174
|
it "should pass correct block parameters through on subscribe" do
|
data/spec/spec_09/bunny_spec.rb
CHANGED
@@ -63,14 +63,12 @@ describe Bunny do
|
|
63
63
|
@b.queues.has_key?('test1').should be(true)
|
64
64
|
end
|
65
65
|
|
66
|
-
# Current RabbitMQ has not implemented some functionality
|
67
|
-
it "should raise an error if setting of QoS fails" do
|
68
|
-
lambda { @b.qos(:global => true) }.should raise_error(Bunny::ForcedConnectionCloseError)
|
69
|
-
@b.status.should == :not_connected
|
70
|
-
end
|
71
|
-
|
72
66
|
it "should be able to set QoS" do
|
73
67
|
@b.qos.should == :qos_ok
|
74
68
|
end
|
75
69
|
|
70
|
+
it "should be able to set QoS (with global:true)" do
|
71
|
+
@b.qos(:global => true).should == :qos_ok
|
72
|
+
end
|
73
|
+
|
76
74
|
end
|
@@ -137,25 +137,22 @@ describe 'Exchange' do
|
|
137
137
|
|
138
138
|
it "should be able to return an undeliverable message" do
|
139
139
|
exch = @b.exchange('return_exch')
|
140
|
-
exch.publish('This message should be undeliverable', :
|
140
|
+
exch.publish('This message should be undeliverable', :mandatory => true)
|
141
141
|
ret_msg = @b.returned_message
|
142
142
|
ret_msg.should be_an_instance_of(Hash)
|
143
143
|
ret_msg[:payload].should == 'This message should be undeliverable'
|
144
144
|
end
|
145
145
|
|
146
|
-
it "should be able to
|
146
|
+
it "should be able to handle connection close on trying to publish with immediate=true" do
|
147
147
|
exch = @b.exchange('return_exch')
|
148
|
-
|
149
|
-
|
150
|
-
ret_msg = @b.returned_message
|
151
|
-
ret_msg.should be_an_instance_of(Hash)
|
152
|
-
ret_msg[:payload].should == lg_msg
|
148
|
+
exch.publish('This message should force a connection close', :immediate => true)
|
149
|
+
lambda { @b.returned_message }.should raise_error(Bunny::ForcedConnectionCloseError)
|
153
150
|
end
|
154
151
|
|
155
|
-
it "should
|
152
|
+
it "should not close the connection when trying to delete a non existent exchange" do
|
156
153
|
exch = @b.exchange('direct_exchange')
|
157
|
-
|
158
|
-
@b.channel.active.should ==
|
154
|
+
exch.delete(:exchange => 'bogus_ex').should == :delete_ok
|
155
|
+
@b.channel.active.should == true
|
159
156
|
end
|
160
157
|
|
161
158
|
it "should be able to be deleted" do
|
data/spec/spec_09/queue_spec.rb
CHANGED
@@ -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 raise an error if unbinding from a non-existent exchange" do
|
64
|
+
it "should not raise an error if unbinding from a non-existent exchange" do
|
65
65
|
q = @b.queue('test1')
|
66
|
-
|
67
|
-
@b.channel.active.should ==
|
66
|
+
q.unbind('bogus').should == :unbind_ok
|
67
|
+
@b.channel.active.should == true
|
68
68
|
end
|
69
69
|
|
70
70
|
it "should be able to unbind from an exchange" do
|
@@ -155,10 +155,10 @@ describe 'Queue' do
|
|
155
155
|
q.purge.should == :purge_ok
|
156
156
|
end
|
157
157
|
|
158
|
-
it "should
|
158
|
+
it "should not close the connections when deleting a non existent queue" do
|
159
159
|
q = @b.queue('test1')
|
160
|
-
|
161
|
-
@b.channel.active.should ==
|
160
|
+
q.delete(:queue => 'bogus').should == :delete_ok
|
161
|
+
@b.channel.active.should == true
|
162
162
|
end
|
163
163
|
|
164
164
|
it "should pass correct block parameters through on subscribe" do
|
metadata
CHANGED
@@ -1,15 +1,9 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: bunny
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 7
|
9
|
-
- 9
|
10
|
-
version: 0.7.9
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.10
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Chris Duncan
|
14
8
|
- Eric Lindvall
|
15
9
|
- Jakub Stastny aka botanicus
|
@@ -18,28 +12,25 @@ authors:
|
|
18
12
|
autorequire:
|
19
13
|
bindir: bin
|
20
14
|
cert_chain: []
|
21
|
-
|
22
|
-
date: 2012-02-07 00:00:00 Z
|
15
|
+
date: 2015-07-15 00:00:00.000000000 Z
|
23
16
|
dependencies: []
|
24
|
-
|
25
|
-
|
26
|
-
email:
|
17
|
+
description: A synchronous Ruby AMQP client that enables interaction with AMQP-compliant
|
18
|
+
brokers.
|
19
|
+
email:
|
27
20
|
- celldee@gmail.com
|
28
21
|
- eric@5stops.com
|
29
22
|
- stastny@101ideas.cz
|
30
23
|
- michael@novemberain.com
|
31
24
|
- skaes@railsexpress.de
|
32
25
|
executables: []
|
33
|
-
|
34
26
|
extensions: []
|
35
|
-
|
36
|
-
extra_rdoc_files:
|
27
|
+
extra_rdoc_files:
|
37
28
|
- README.textile
|
38
|
-
files:
|
39
|
-
- .gitignore
|
40
|
-
- .rspec
|
41
|
-
- .travis.yml
|
42
|
-
- .yardopts
|
29
|
+
files:
|
30
|
+
- ".gitignore"
|
31
|
+
- ".rspec"
|
32
|
+
- ".travis.yml"
|
33
|
+
- ".yardopts"
|
43
34
|
- CHANGELOG
|
44
35
|
- Gemfile
|
45
36
|
- LICENSE
|
@@ -105,39 +96,31 @@ files:
|
|
105
96
|
- spec/spec_09/queue_spec.rb
|
106
97
|
homepage: http://github.com/ruby-amqp/bunny
|
107
98
|
licenses: []
|
108
|
-
|
109
|
-
post_install_message: "[\e[32mVersion 0.7.
|
110
|
-
|
111
|
-
|
99
|
+
metadata: {}
|
100
|
+
post_install_message: "[\e[32mVersion 0.7.10\e[0m] handle messages larger than frame_max
|
101
|
+
correctly\n"
|
102
|
+
rdoc_options:
|
103
|
+
- "--main"
|
112
104
|
- README.rdoc
|
113
|
-
require_paths:
|
105
|
+
require_paths:
|
114
106
|
- lib
|
115
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
-
|
117
|
-
requirements:
|
107
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
118
109
|
- - ">="
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
version: "0"
|
124
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
|
-
requirements:
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
127
114
|
- - ">="
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
|
130
|
-
segments:
|
131
|
-
- 0
|
132
|
-
version: "0"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
133
117
|
requirements: []
|
134
|
-
|
135
118
|
rubyforge_project: bunny-amqp
|
136
|
-
rubygems_version:
|
119
|
+
rubygems_version: 2.4.8
|
137
120
|
signing_key:
|
138
|
-
specification_version:
|
121
|
+
specification_version: 4
|
139
122
|
summary: Synchronous Ruby AMQP 0.9.1 client
|
140
|
-
test_files:
|
123
|
+
test_files:
|
141
124
|
- spec/spec_08/bunny_spec.rb
|
142
125
|
- spec/spec_08/connection_spec.rb
|
143
126
|
- spec/spec_08/exchange_spec.rb
|
@@ -147,3 +130,4 @@ test_files:
|
|
147
130
|
- spec/spec_09/connection_spec.rb
|
148
131
|
- spec/spec_09/exchange_spec.rb
|
149
132
|
- spec/spec_09/queue_spec.rb
|
133
|
+
has_rdoc: true
|