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