amqp 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +1 -0
- data/CHANGELOG +4 -0
- data/README.md +2 -2
- data/amqp.gemspec +1 -1
- data/docs/GettingStarted.textile +4 -4
- data/lib/amqp/channel.rb +19 -0
- data/lib/amqp/queue.rb +10 -1
- data/lib/amqp/version.rb +1 -1
- metadata +9 -56
data/.travis.yml
CHANGED
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
= Version 0.8.1 (not yet released)
|
2
|
+
|
3
|
+
* [API] AMQP::Channel#reuse allows channel instance to be reused with a different channel id, may be used to recover from channel-level exceptions.
|
4
|
+
|
1
5
|
= Version 0.8.0
|
2
6
|
|
3
7
|
* [API] AMQP::Session#on_skipped_heartbeats callback that can be used to handle skipped heartbeats (for cases when TCP network failure detection is not timely enough)
|
data/README.md
CHANGED
@@ -71,11 +71,11 @@ with are outdated even in recent (10.10) releases. Learn more in the [RabbitMQ v
|
|
71
71
|
On Microsoft Windows 7
|
72
72
|
|
73
73
|
gem install eventmachine --pre
|
74
|
-
gem install amqp
|
74
|
+
gem install amqp
|
75
75
|
|
76
76
|
On other OSes or [JRuby](http://jruby.org):
|
77
77
|
|
78
|
-
gem install amqp
|
78
|
+
gem install amqp
|
79
79
|
|
80
80
|
|
81
81
|
### "Hello, World" example ###
|
data/amqp.gemspec
CHANGED
data/docs/GettingStarted.textile
CHANGED
@@ -70,13 +70,13 @@ h4. On Microsoft Windows 7:
|
|
70
70
|
|
71
71
|
<pre>
|
72
72
|
gem install eventmachine --pre
|
73
|
-
gem install amqp
|
73
|
+
gem install amqp
|
74
74
|
</pre>
|
75
75
|
|
76
76
|
h4. On other OSes or JRuby:
|
77
77
|
|
78
78
|
<pre>
|
79
|
-
gem install amqp
|
79
|
+
gem install amqp
|
80
80
|
</pre>
|
81
81
|
|
82
82
|
h3. You can also use Bundler to install the gem
|
@@ -85,7 +85,7 @@ h3. You can also use Bundler to install the gem
|
|
85
85
|
<code>
|
86
86
|
source :rubygems
|
87
87
|
|
88
|
-
gem "amqp", "~> 0.8.0
|
88
|
+
gem "amqp", "~> 0.8.0" # optionally: :git => "git://github.com/ruby-amqp/amqp.git", :branch => "0.8.x-stable"
|
89
89
|
</code>
|
90
90
|
</pre>
|
91
91
|
|
@@ -100,7 +100,7 @@ irb -rubygems
|
|
100
100
|
:001 > require "amqp"
|
101
101
|
=> true
|
102
102
|
:002 > AMQP::VERSION
|
103
|
-
=> "0.8.0
|
103
|
+
=> "0.8.0"
|
104
104
|
</code>
|
105
105
|
</pre>
|
106
106
|
|
data/lib/amqp/channel.rb
CHANGED
@@ -270,6 +270,25 @@ module AMQP
|
|
270
270
|
end
|
271
271
|
end # auto_recover
|
272
272
|
|
273
|
+
# Can be used to recover channels from channel-level exceptions. Allocates a new channel id and reopens
|
274
|
+
# itself with this new id, releasing the old id after the new one is allocated.
|
275
|
+
#
|
276
|
+
# @api public
|
277
|
+
def reuse
|
278
|
+
old_id = @id
|
279
|
+
# must release after we allocate a new id, otherwise we will end up
|
280
|
+
# with the same value. MK.
|
281
|
+
@id = self.class.next_channel_id
|
282
|
+
self.class.release_channel_id(old_id)
|
283
|
+
|
284
|
+
self.open do
|
285
|
+
@channel_is_open_deferrable.succeed
|
286
|
+
|
287
|
+
# exchanges must be recovered first because queue recovery includes recovery of bindings. MK.
|
288
|
+
@exchanges.each { |name, e| e.auto_recover }
|
289
|
+
@queues.each { |name, q| q.auto_recover }
|
290
|
+
end
|
291
|
+
end # reuse
|
273
292
|
|
274
293
|
|
275
294
|
|
data/lib/amqp/queue.rb
CHANGED
@@ -811,7 +811,16 @@ module AMQP
|
|
811
811
|
|
812
812
|
shim = Proc.new { |q, declare_ok| block.call(declare_ok.message_count, declare_ok.consumer_count) }
|
813
813
|
|
814
|
-
@channel.once_open
|
814
|
+
@channel.once_open do
|
815
|
+
# we do not use self.declare here to avoid caching of @passive since that will cause unexpected side-effects during automatic
|
816
|
+
# recovery process. MK.
|
817
|
+
@connection.send_frame(AMQ::Protocol::Queue::Declare.encode(@channel.id, @name, true, @opts[:durable], @opts[:exclusive], @opts[:auto_delete], false, @opts[:arguments]))
|
818
|
+
|
819
|
+
self.append_callback(:declare, &shim)
|
820
|
+
@channel.queues_awaiting_declare_ok.push(self)
|
821
|
+
end
|
822
|
+
|
823
|
+
self
|
815
824
|
end
|
816
825
|
|
817
826
|
|
data/lib/amqp/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amqp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 1
|
10
|
+
version: 0.8.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Aman Gupta
|
@@ -17,8 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-
|
21
|
-
default_executable:
|
20
|
+
date: 2011-10-12 00:00:00 Z
|
22
21
|
dependencies:
|
23
22
|
- !ruby/object:Gem::Dependency
|
24
23
|
name: eventmachine
|
@@ -58,12 +57,12 @@ dependencies:
|
|
58
57
|
requirements:
|
59
58
|
- - ~>
|
60
59
|
- !ruby/object:Gem::Version
|
61
|
-
hash:
|
60
|
+
hash: 57
|
62
61
|
segments:
|
63
62
|
- 0
|
64
63
|
- 8
|
65
|
-
-
|
66
|
-
version: 0.8.
|
64
|
+
- 3
|
65
|
+
version: 0.8.3
|
67
66
|
type: :runtime
|
68
67
|
version_requirements: *id003
|
69
68
|
description: Widely used, feature-rich asynchronous AMQP 0.9.1 client with batteries included.
|
@@ -329,56 +328,10 @@ files:
|
|
329
328
|
- spec/unit/amqp/client_spec.rb
|
330
329
|
- spec/unit/amqp/connection_spec.rb
|
331
330
|
- spec/unit/amqp/int_allocator_spec.rb
|
332
|
-
has_rdoc: true
|
333
331
|
homepage: http://github.com/ruby-amqp/amqp
|
334
332
|
licenses: []
|
335
333
|
|
336
|
-
post_install_message:
|
337
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Exchange#publish calls now use a mutex on the channel exchange is declared on. Sharing channels between threads is discouraged but amqp gem covers your back in the most dangerous case.\n\
|
338
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Channel#synchronize now can be used to guarantee mutual exclusion of multiple threads on channel instances.\n\
|
339
|
-
[\e[32mVersion 0.8.0\e[0m] [BUG] Empty messages can finally be published fine. Yes, it took us just 3 years.\n\
|
340
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] When connected to RabbitMQ, RabbitMQ-specific extensions are required automatically\n\
|
341
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] AMQP::Session#broker and AMQP::Broker allow for broker capabilities inspection\n\
|
342
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] New bitset-based channel id allocator\n\
|
343
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] Multiple consumers per queue with AMQP::Consumer\n\
|
344
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] Automatic recovery mode for channels\n\
|
345
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] Network connection recovery callbacks for channels, exchanges, queues, consumers\n\
|
346
|
-
[\e[32mVersion 0.8.0\e[0m] [API] Connection URI (string) format for vhosts no longer assumes that vhosts begin with a slash (/), learn more at http://bit.ly/mfzwcB\n\
|
347
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] Returned messages, including header & content via AMQP::Exchange#on_publish. Callback accepts 3 args: basic_return, header, body\n\
|
348
|
-
[\e[32mVersion 0.8.0\e[0m] [BUG] Ruby 1.8.7-p249 is not supported because of this (p249-specific) Ruby bug: http://bit.ly/iONBmH\n\
|
349
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] AMQP::Utilities::EventLoopHelper detects app server (if any) being used and starts EventMachine reactor in an optimal way.\n\
|
350
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] AMQP 0.9.1 support, including tx.* operations class.\n\
|
351
|
-
[\e[32mVersion 0.8.0\e[0m] [API] Default authentication handler now raises AMQP::PossibleAuthenticationFailureError\n\
|
352
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Channel#initialize now takes 3rd (optional) options hash.\n\
|
353
|
-
[\e[32mVersion 0.8.0\e[0m] [API] Broker connection class is now AMQP::Session.\n\
|
354
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Error instance now may carry cause, an exception that caused exception in question to be raised.\n\
|
355
|
-
[\e[32mVersion 0.8.0\e[0m] [API] When initial TCP connection fails, default action is now to raise AMQP::TCPConnectionFailed.\n\
|
356
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::BasicClient#reconnect now takes 2nd optional argument, period of waiting in seconds.\n\
|
357
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] Handlers for initial connection failure, connection loss; channel-level exceptions handlers on Channel instances.\n\
|
358
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Exchange#initialize now accepts :arguments option that takes a hash.\n\
|
359
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#initialize now accepts :arguments option that takes a hash.\n\
|
360
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP#Logger is deprecated. It will be removed before 1.0 release.\n\
|
361
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP#fork is deprecated. It will be removed before 1.0 release.\n\
|
362
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::RPC is deprecated. It will be removed before 1.0 release.\n\
|
363
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] Significant improvements to the documentation. From now on lack of/poor documentation is considered a severe bug.\n\
|
364
|
-
[\e[32mVersion 0.8.0\e[0m] [FEATURE] Support for RabbitMQ extensions to AMQP 0.9.1\n\
|
365
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Exchange#publish now accepts (an optional) callback.\n\
|
366
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Channel.new now accepts (an optional) callback.\n\
|
367
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Header#ack now can acknowledge multiple deliveries\n\
|
368
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Exchange#delete now takes (an optional) block that is called when exchange.delete-ok response arrives.\n\
|
369
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Header now implements #to_hash\n\
|
370
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#pop block now can take 1, 2 or 3 arguments.\n\
|
371
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#purge now takes an optional block which is called when queue.purge-ok response arrives.\n\
|
372
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#delete now takes an optional block which is called when queue.delete-ok response arrives.\n\
|
373
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#delete now accepts :nowait option.\n\
|
374
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#unbind now takes an optional block which is called when queue.unbind-ok response arrives.\n\
|
375
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#unbind now accepts :routing_key as alias to :key. we believe it is a good idea to use AMQP terms.\n\
|
376
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Channel#prefetch now takes (an optional) 2nd parameter that specifies that QoS settings should be applied to underlying connection, as well as optional callback.\n\
|
377
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Channel#recover now takes (an optional) callback that is called when basic.recover-ok is received.\n\
|
378
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Frame is gone.\n\
|
379
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Buffer is gone. Serialization & framing are now handled primarily by amq-protocol.\n\
|
380
|
-
[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#publish is deprecated.\n\
|
381
|
-
[\e[32mVersion 0.8.0\e[0m] [API] Name argument for AMQP::Queue.new and Channel#queue is optional.\n"
|
334
|
+
post_install_message:
|
382
335
|
rdoc_options:
|
383
336
|
- --include=examples --main README.md
|
384
337
|
require_paths:
|
@@ -404,7 +357,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
404
357
|
requirements: []
|
405
358
|
|
406
359
|
rubyforge_project: amqp
|
407
|
-
rubygems_version: 1.
|
360
|
+
rubygems_version: 1.8.10
|
408
361
|
signing_key:
|
409
362
|
specification_version: 3
|
410
363
|
summary: Widely used, feature-rich asynchronous AMQP 0.9.1 client with batteries included
|