amqp 1.0.4 → 1.1.0.pre1
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 +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -0
- data/ChangeLog.md +35 -0
- data/Gemfile +3 -5
- data/README.md +9 -14
- data/amqp.gemspec +2 -2
- data/lib/amqp/channel.rb +8 -119
- data/lib/amqp/client.rb +0 -3
- data/lib/amqp/exchange.rb +1 -5
- data/lib/amqp/extensions/rabbitmq.rb +1 -1
- data/lib/amqp/version.rb +1 -1
- data/spec/integration/channel_level_exception_with_multiple_channels_spec.rb +0 -8
- data/spec/integration/headers_exchange_routing_spec.rb +3 -3
- data/spec/integration/store_and_forward_spec.rb +3 -3
- metadata +11 -10
- data/CHANGELOG +0 -101
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01406174e5cb3d674733040989c60c3c8c0392b3
|
4
|
+
data.tar.gz: c01d64774da2210e3c9d4b1ba8f3f934b7174209
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 268b7dd0dba139086ad620543cc034c402e794461e7908308e5a748c205020a9d815be0461dc0fa768dccca2c633bfd954220bd768f086ab3b252220a4eaa4b2
|
7
|
+
data.tar.gz: 304a194b0860926c7318d8f89b64de2a1e6fe6317249cde8d521581e5e9009b95ca93c6d86671a5aa3035802153974531cd4d5e903f167741a9dc4f937bbb6b0
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0@rabbitmq
|
data/ChangeLog.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
## Changes Between 1.0.0 and 1.1.0
|
2
|
+
|
3
|
+
### AMQP::Channel#confirm_select is Now Delayed
|
4
|
+
|
5
|
+
`AMQP::Channel#confirm_select` is now delayed until after the channel
|
6
|
+
is opened, making it possible to use it with the pseudo-synchronous
|
7
|
+
code style.
|
8
|
+
|
9
|
+
### RabbitMQ Extensions are Now in Core
|
10
|
+
|
11
|
+
amqp gem has been targeting RabbitMQ exclusively for a while now.
|
12
|
+
|
13
|
+
RabbitMQ extensions are now loaded by default and will be even more
|
14
|
+
tightly integrated in the future.
|
15
|
+
|
16
|
+
### AMQP::Channel.default is Removed
|
17
|
+
|
18
|
+
`AMQP::Channel.default` and method_missing-based operations on the default
|
19
|
+
channel has been removed. They've been deprecated since 0.6.
|
20
|
+
|
21
|
+
### AMQP::Channel#rpc is Removed
|
22
|
+
|
23
|
+
`AMQP::RPC`-related code has been removed. It has been deprecated
|
24
|
+
since 0.7.
|
25
|
+
|
26
|
+
### AMQP::Channel.on_error is Removed
|
27
|
+
|
28
|
+
Long time deprecated `AMQP::Channel.on_error` is removed.
|
29
|
+
|
30
|
+
|
31
|
+
## Version 1.0.0
|
32
|
+
|
33
|
+
### Deprecated APIs are Being Removed
|
34
|
+
|
35
|
+
Most of public API bits deprecated in 0.8.0 are COMPLETELY REMOVED.
|
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.
|
@@ -14,7 +14,7 @@ def custom_gem(name, options = Hash.new)
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
custom_gem "eventmachine"
|
17
|
+
custom_gem "eventmachine", ">= 1.0.0"
|
18
18
|
# gem "json", :platform => :ruby_18
|
19
19
|
custom_gem "amq-client", :git => "git://github.com/ruby-amqp/amq-client.git", :branch => "master"
|
20
20
|
custom_gem "amq-protocol", :git => "git://github.com/ruby-amqp/amq-protocol.git", :branch => "master"
|
@@ -32,13 +32,11 @@ group :development do
|
|
32
32
|
gem "thin"
|
33
33
|
gem "unicorn"
|
34
34
|
end
|
35
|
-
|
36
|
-
gem "changelog"
|
37
35
|
end
|
38
36
|
|
39
37
|
group :test do
|
40
38
|
gem "rspec", "~> 2.6.0"
|
41
|
-
gem "rake", "~> 0.
|
39
|
+
gem "rake", "~> 10.0.0"
|
42
40
|
|
43
41
|
custom_gem "evented-spec", :git => "git://github.com/ruby-amqp/evented-spec.git", :branch => "master"
|
44
42
|
gem "effin_utf8"
|
data/README.md
CHANGED
@@ -6,25 +6,20 @@ This library works with Ruby 1.8.7 (*except for p249*, see the FAQ), Ruby 1.9.2,
|
|
6
6
|
0.8.0 and later versions of amqp gem implement [AMQP 0.9.1](http://www.rabbitmq.com/tutorials/amqp-concepts.html) (see also [AMQP 0.9.1 spec document](http://bit.ly/amqp091spec)) and support [RabbitMQ extensions to AMQP 0.9.1](http://www.rabbitmq.com/extensions.html).
|
7
7
|
|
8
8
|
|
9
|
-
## I know what
|
9
|
+
## I know what AMQP is, how do I get started?
|
10
10
|
|
11
11
|
See [Getting started with amqp gem](http://rubyamqp.info/articles/getting_started/) and other [amqp gem documentation guides](http://rubyamqp.info/).
|
12
|
-
We recommend that you read [AMQP 0.9.1 Model Explained](http://www.rabbitmq.com/tutorials/amqp-concepts.html)
|
13
|
-
and consider [Bunny](http://rubybunny.info) and [March Hare](http://rubymarchhare.info), too.
|
12
|
+
We recommend that you read [AMQP 0.9.1 Model Explained](http://www.rabbitmq.com/tutorials/amqp-concepts.html), too.
|
14
13
|
|
15
14
|
|
16
15
|
|
17
|
-
## What is AMQP
|
16
|
+
## What is AMQP?
|
18
17
|
|
19
|
-
AMQP
|
20
|
-
interoperability between different technologies (for example, Java,
|
21
|
-
.NET, Ruby, Python, Node.js, Erlang, C and so on).
|
18
|
+
AMQP is an [open standard for messaging middleware](http://www.amqp.org/confluence/display/AMQP/About+AMQP) that
|
19
|
+
emphasizes interoperability between different technologies (for example, Java, .NET, Ruby, Python, Node.js, Erlang, C and so on).
|
22
20
|
|
23
|
-
Key features of AMQP
|
24
|
-
|
25
|
-
example, message acknowledgements, returning of messages to producer,
|
26
|
-
redelivery of messages that couldn't be processed, load balancing
|
27
|
-
between message consumers and so on.
|
21
|
+
Key features of AMQP are very flexible yet simple routing and binary protocol efficiency. AMQP supports many sophisticated features, for example,
|
22
|
+
message acknowledgements, returning of messages to producer, redelivery of messages that couldn't be processed, load balancing between message consumers and so on.
|
28
23
|
|
29
24
|
|
30
25
|
## What is amqp gem good for?
|
@@ -183,14 +178,14 @@ We cover Web application integration for multiple Ruby Web servers in [Connectin
|
|
183
178
|
|
184
179
|
## Migration from amqp gem 0.6.x and 0.7.x
|
185
180
|
|
186
|
-
Upgrading from amqp gem 0.6.x and 0.7.x to
|
181
|
+
Upgrading from amqp gem 0.6.x and 0.7.x to 0.8.0+ is straightforward, please see [amqp gem 0.8.0 migration guide](http://rubyamqp.info/articles/08_migration/).
|
187
182
|
The same guide explains amqp gem versions history and why you would want to upgrade.
|
188
183
|
|
189
184
|
|
190
185
|
|
191
186
|
## Maintainer Information
|
192
187
|
|
193
|
-
amqp gem is maintained by [Michael Klishin](
|
188
|
+
amqp gem is maintained by [Michael Klishin](http://twitter.com/michaelklishin).
|
194
189
|
|
195
190
|
|
196
191
|
## Continuous Integration
|
data/amqp.gemspec
CHANGED
@@ -24,8 +24,8 @@ Gem::Specification.new do |s|
|
|
24
24
|
|
25
25
|
# Dependencies
|
26
26
|
s.add_dependency "eventmachine"
|
27
|
-
s.add_dependency "amq-client", "~> 1.0.
|
28
|
-
s.add_dependency "amq-protocol", ">= 1.
|
27
|
+
s.add_dependency "amq-client", "~> 1.1.0.pre1"
|
28
|
+
s.add_dependency "amq-protocol", ">= 1.6.0"
|
29
29
|
|
30
30
|
s.rubyforge_project = "amqp"
|
31
31
|
end
|
data/lib/amqp/channel.rb
CHANGED
@@ -213,7 +213,6 @@ module AMQP
|
|
213
213
|
|
214
214
|
super(@connection, id, options)
|
215
215
|
|
216
|
-
@rpcs = Hash.new
|
217
216
|
# we need this deferrable to mimic what AMQP gem 0.7 does to enable
|
218
217
|
# the following (pseudo-synchronous) style of programming some people use in their
|
219
218
|
# existing codebases:
|
@@ -344,10 +343,6 @@ module AMQP
|
|
344
343
|
# method it will raise a channel or connection exception.
|
345
344
|
#
|
346
345
|
#
|
347
|
-
# @raise [AMQP::Error] Raised when exchange is redeclared with parameters different from original declaration.
|
348
|
-
# @raise [AMQP::Error] Raised when exchange is declared with :passive => true and the exchange does not exist.
|
349
|
-
#
|
350
|
-
#
|
351
346
|
# @example Using default pre-declared direct exchange and no callbacks (pseudo-synchronous style)
|
352
347
|
#
|
353
348
|
# # an exchange application A will be using to publish updates
|
@@ -475,11 +470,6 @@ module AMQP
|
|
475
470
|
# not wait for a reply method. If the server could not complete the
|
476
471
|
# method it will raise a channel or connection exception.
|
477
472
|
#
|
478
|
-
#
|
479
|
-
# @raise [AMQP::Error] Raised when exchange is redeclared with parameters different from original declaration.
|
480
|
-
# @raise [AMQP::Error] Raised when exchange is declared with :passive => true and the exchange does not exist.
|
481
|
-
#
|
482
|
-
#
|
483
473
|
# @example Using fanout exchange to deliver messages to multiple consumers
|
484
474
|
#
|
485
475
|
# # open up a channel
|
@@ -540,11 +530,6 @@ module AMQP
|
|
540
530
|
# not wait for a reply method. If the server could not complete the
|
541
531
|
# method it will raise a channel or connection exception.
|
542
532
|
#
|
543
|
-
#
|
544
|
-
# @raise [AMQP::Error] Raised when exchange is redeclared with parameters different from original declaration.
|
545
|
-
# @raise [AMQP::Error] Raised when exchange is declared with :passive => true and the exchange does not exist.
|
546
|
-
#
|
547
|
-
#
|
548
533
|
# @example Using topic exchange to deliver relevant news updates
|
549
534
|
# AMQP.connect do |connection|
|
550
535
|
# channel = AMQP::Channel.new(connection)
|
@@ -656,10 +641,6 @@ module AMQP
|
|
656
641
|
# method it will raise a channel or connection exception.
|
657
642
|
#
|
658
643
|
#
|
659
|
-
# @raise [AMQP::Error] Raised when exchange is redeclared with parameters different from original declaration.
|
660
|
-
# @raise [AMQP::Error] Raised when exchange is declared with :passive => true and the exchange does not exist.
|
661
|
-
#
|
662
|
-
#
|
663
644
|
# @example Using headers exchange to route messages based on multiple attributes (OS, architecture, # of cores)
|
664
645
|
#
|
665
646
|
# puts "=> Headers routing example"
|
@@ -801,12 +782,6 @@ module AMQP
|
|
801
782
|
# not wait for a reply method. If the server could not complete the
|
802
783
|
# method it will raise a channel or connection exception.
|
803
784
|
#
|
804
|
-
#
|
805
|
-
# @raise [AMQP::Error] Raised when queue is redeclared with parameters different from original declaration.
|
806
|
-
# @raise [AMQP::Error] Raised when queue is declared with :passive => true and the queue does not exist.
|
807
|
-
# @raise [AMQP::Error] Raised when queue is declared with :exclusive => true and queue with that name already exist.
|
808
|
-
#
|
809
|
-
#
|
810
785
|
# @yield [queue, declare_ok] Yields successfully declared queue instance and AMQP method (queue.declare-ok) instance. The latter is optional.
|
811
786
|
# @yieldparam [Queue] queue Queue that is successfully declared and is ready to be used.
|
812
787
|
# @yieldparam [AMQP::Protocol::Queue::DeclareOk] declare_ok AMQP queue.declare-ok) instance.
|
@@ -869,49 +844,6 @@ module AMQP
|
|
869
844
|
|
870
845
|
|
871
846
|
|
872
|
-
# Instantiates and returns an RPC instance associated with this channel.
|
873
|
-
#
|
874
|
-
# The optional object may be a class name, module name or object
|
875
|
-
# instance. When given a class or module name, the object is instantiated
|
876
|
-
# during this setup. The passed queue is automatically subscribed to so
|
877
|
-
# it passes all messages (and their arguments) to the object.
|
878
|
-
#
|
879
|
-
# Marshalling and unmarshalling the objects is handled internally. This
|
880
|
-
# marshalling is subject to the same restrictions as defined in the
|
881
|
-
# [http://ruby-doc.org/core/classes/Marshal.html Marshal module} in the Ruby standard
|
882
|
-
# library.
|
883
|
-
#
|
884
|
-
# When the optional object is not passed, the returned rpc reference is
|
885
|
-
# used to send messages and arguments to the queue. See {AMQP::RPC#method_missing}
|
886
|
-
# which does all of the heavy lifting with the proxy. Some client
|
887
|
-
# elsewhere must call this method *with* the optional block so that
|
888
|
-
# there is a valid destination. Failure to do so will just enqueue
|
889
|
-
# marshalled messages that are never consumed.
|
890
|
-
#
|
891
|
-
# @example Use of RPC
|
892
|
-
#
|
893
|
-
# # TODO
|
894
|
-
#
|
895
|
-
#
|
896
|
-
# @param [String, Queue] Queue to be used by RPC server.
|
897
|
-
# @return [RPC]
|
898
|
-
# @api public
|
899
|
-
def rpc(name, obj = nil)
|
900
|
-
RPC.new(self, name, obj)
|
901
|
-
end
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
# Returns a hash of all rpc proxy objects.
|
906
|
-
#
|
907
|
-
# Most of the time, this method is not
|
908
|
-
# called by application code.
|
909
|
-
# @api plugin
|
910
|
-
def rpcs
|
911
|
-
@rpcs.values
|
912
|
-
end
|
913
|
-
|
914
|
-
|
915
847
|
|
916
848
|
# @group Channel lifecycle
|
917
849
|
|
@@ -1092,20 +1024,18 @@ module AMQP
|
|
1092
1024
|
super(&block)
|
1093
1025
|
end
|
1094
1026
|
|
1027
|
+
# @endgroup
|
1095
1028
|
|
1096
|
-
# Defines a global callback to be run on channel-level exception across
|
1097
|
-
# all channels. Consider using Channel#on_error instead. This method is here for sake
|
1098
|
-
# of backwards compatibility with 0.6.x and 0.7.x releases.
|
1099
|
-
# @see AMQP::Channel#on_error
|
1100
|
-
# @deprecated
|
1101
|
-
# @api public
|
1102
|
-
def self.on_error(&block)
|
1103
|
-
self.error(&block)
|
1104
|
-
end # self.on_error(&block)
|
1105
1029
|
|
1106
|
-
# @
|
1030
|
+
# @group Publisher Confirms
|
1107
1031
|
|
1032
|
+
def confirm_select(nowait = false, &block)
|
1033
|
+
self.once_open do
|
1034
|
+
super(nowait, &block)
|
1035
|
+
end
|
1036
|
+
end
|
1108
1037
|
|
1038
|
+
# @endgroup
|
1109
1039
|
|
1110
1040
|
|
1111
1041
|
#
|
@@ -1177,7 +1107,6 @@ module AMQP
|
|
1177
1107
|
# @api plugin
|
1178
1108
|
def reset_state!
|
1179
1109
|
super
|
1180
|
-
@rpcs = Hash.new
|
1181
1110
|
end # reset_state!
|
1182
1111
|
|
1183
1112
|
|
@@ -1248,46 +1177,6 @@ module AMQP
|
|
1248
1177
|
@int_allocator ||= IntAllocator.new(1, max_channel)
|
1249
1178
|
end # self.initialize_channel_id_allocator
|
1250
1179
|
|
1251
|
-
# @private
|
1252
|
-
# @api plugin
|
1253
|
-
def register_rpc(rpc)
|
1254
|
-
raise ArgumentError, "argument is nil!" unless rpc
|
1255
|
-
|
1256
|
-
@rpcs[rpc.name] = rpc
|
1257
|
-
end # register_rpc(rpc)
|
1258
|
-
|
1259
|
-
# @private
|
1260
|
-
# @api plugin
|
1261
|
-
def find_rpc(name)
|
1262
|
-
@rpcs[name]
|
1263
|
-
end
|
1264
|
-
|
1265
|
-
|
1266
|
-
#
|
1267
|
-
# Backwards compatibility with 0.6.x
|
1268
|
-
#
|
1269
|
-
|
1270
|
-
# unique identifier of the default thread-local channel
|
1271
|
-
# @deprecated
|
1272
|
-
# @private
|
1273
|
-
def self.id
|
1274
|
-
Thread.current[:mq_id] ||= "#{`hostname`.strip}-#{Process.pid}-#{Thread.current.object_id}"
|
1275
|
-
end
|
1276
|
-
|
1277
|
-
# @private
|
1278
|
-
# @deprecated
|
1279
|
-
def self.default
|
1280
|
-
# TODO: clear this when connection is closed
|
1281
|
-
Thread.current[:mq] ||= AMQP::Channel.new
|
1282
|
-
end
|
1283
|
-
|
1284
|
-
# Allows for calls to all MQ instance methods. This implicitly calls
|
1285
|
-
# AMQP::Channel.new so that a new channel is allocated for subsequent operations.
|
1286
|
-
# @deprecated
|
1287
|
-
def self.method_missing(meth, *args, &blk)
|
1288
|
-
self.default.__send__(meth, *args, &blk)
|
1289
|
-
end
|
1290
|
-
|
1291
1180
|
|
1292
1181
|
protected
|
1293
1182
|
|
data/lib/amqp/client.rb
CHANGED
data/lib/amqp/exchange.rb
CHANGED
@@ -50,7 +50,7 @@ module AMQP
|
|
50
50
|
# As part of the standard, the server _must_ predeclare the direct exchange
|
51
51
|
# 'amq.direct' and the fanout exchange 'amq.fanout' (all exchange names
|
52
52
|
# starting with 'amq.' are reserved). Attempts to declare an exchange using
|
53
|
-
# 'amq.' as the name will
|
53
|
+
# 'amq.' as the name will result in a channel-level exception and fail. In practice these
|
54
54
|
# default exchanges are never used directly by client code.
|
55
55
|
#
|
56
56
|
#
|
@@ -278,10 +278,6 @@ module AMQP
|
|
278
278
|
# @option opts [Hash] :arguments (nil) A hash of optional arguments with the declaration. Some brokers implement
|
279
279
|
# AMQP extensions using x-prefixed declaration arguments.
|
280
280
|
#
|
281
|
-
#
|
282
|
-
# @raise [AMQP::Error] Raised when exchange is redeclared with parameters different from original declaration.
|
283
|
-
# @raise [AMQP::Error] Raised when exchange is declared with :passive => true and the exchange does not exist.
|
284
|
-
#
|
285
281
|
# @yield [exchange, declare_ok] Yields successfully declared exchange instance and AMQP method (exchange.declare-ok) instance. The latter is optional.
|
286
282
|
# @yieldparam [Exchange] exchange Exchange that is successfully declared and is ready to be used.
|
287
283
|
# @yieldparam [AMQP::Protocol::Exchange::DeclareOk] declare_ok AMQP exchange.declare-ok) instance.
|
data/lib/amqp/version.rb
CHANGED
@@ -35,13 +35,6 @@ describe AMQP do
|
|
35
35
|
end
|
36
36
|
@q1 = @channel.queue(name, options)
|
37
37
|
|
38
|
-
# backwards compatibility, please consider against
|
39
|
-
# using global error handlers in your programs!
|
40
|
-
AMQP::Channel.on_error do |msg|
|
41
|
-
puts "Global handler has fired: #{msg}"
|
42
|
-
@global_callback_fired = true
|
43
|
-
end
|
44
|
-
|
45
38
|
# Small delays to ensure the order of execution
|
46
39
|
delayed(0.1) {
|
47
40
|
@other_channel = AMQP::Channel.new
|
@@ -58,7 +51,6 @@ describe AMQP do
|
|
58
51
|
|
59
52
|
done(0.4) {
|
60
53
|
@callback_fired.should be_true
|
61
|
-
@global_callback_fired.should be_true
|
62
54
|
# looks like there is a difference between platforms/machines
|
63
55
|
# so check either one. MK.
|
64
56
|
@other_channel.closed?.should be_true
|
@@ -49,7 +49,7 @@ describe "Headers exchange" do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
any_linux_messages = []
|
52
|
-
@channel.queue("", :auto_delete => true).bind(exchange, :arguments => { :os => 'linux' }).subscribe do |metadata, payload|
|
52
|
+
@channel.queue("", :auto_delete => true).bind(exchange, :arguments => { "x-match" => "any", :os => 'linux' }).subscribe do |metadata, payload|
|
53
53
|
any_linux_messages << [metadata, payload]
|
54
54
|
end
|
55
55
|
|
@@ -59,7 +59,7 @@ describe "Headers exchange" do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
riak_messages = []
|
62
|
-
@channel.queue("", :auto_delete => true).bind(exchange, :arguments => { :package => { :name => 'riak', :version => '0.14.2' } }).subscribe do |metadata, payload|
|
62
|
+
@channel.queue("", :auto_delete => true).bind(exchange, :arguments => { "x-match" => "any", :package => { :name => 'riak', :version => '0.14.2' } }).subscribe do |metadata, payload|
|
63
63
|
riak_messages << [metadata, payload]
|
64
64
|
end
|
65
65
|
|
@@ -110,7 +110,7 @@ describe "Multiple consumers" do
|
|
110
110
|
@queue = @channel.queue("", :auto_delete => true)
|
111
111
|
@exchange = @channel.headers("amqpgem.tests.integration.headers.exchange1", :auto_delete => true)
|
112
112
|
|
113
|
-
@queue.bind(@exchange, :arguments => { :slug => "all" })
|
113
|
+
@queue.bind(@exchange, :arguments => { :slug => "all", "x-match" => "any" })
|
114
114
|
end
|
115
115
|
|
116
116
|
|
@@ -47,7 +47,7 @@ describe "Store-and-forward routing" do
|
|
47
47
|
expected_number_of_messages = 300
|
48
48
|
# It is always a good idea to use non-ASCII charachters in
|
49
49
|
# various test suites. MK.
|
50
|
-
dispatched_data = "
|
50
|
+
dispatched_data = "messages sent at #{Time.now.to_i}"
|
51
51
|
|
52
52
|
@queue.purge
|
53
53
|
@queue.subscribe(:ack => false) do |payload|
|
@@ -81,8 +81,8 @@ describe "Store-and-forward routing" do
|
|
81
81
|
@exchange.publish(rand, :key => @queue_name)
|
82
82
|
end
|
83
83
|
|
84
|
-
#
|
85
|
-
done(
|
84
|
+
# 5 seconds are for Rubinius, it is surprisingly slow on this workload
|
85
|
+
done(5.0) {
|
86
86
|
number_of_received_messages.should == expected_number_of_messages
|
87
87
|
@queue.unsubscribe
|
88
88
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amqp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.1.0.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aman Gupta
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-06-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: eventmachine
|
@@ -32,28 +32,28 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - ~>
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 1.0.
|
35
|
+
version: 1.1.0.pre1
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - ~>
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 1.0.
|
42
|
+
version: 1.1.0.pre1
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: amq-protocol
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - '>='
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.
|
49
|
+
version: 1.6.0
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - '>='
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 1.
|
56
|
+
version: 1.6.0
|
57
57
|
description: Widely used, feature-rich asynchronous RabbitMQ client with batteries
|
58
58
|
included.
|
59
59
|
email:
|
@@ -84,9 +84,10 @@ extra_rdoc_files:
|
|
84
84
|
files:
|
85
85
|
- .gitignore
|
86
86
|
- .rspec
|
87
|
+
- .ruby-version
|
87
88
|
- .travis.yml
|
88
89
|
- .yardopts
|
89
|
-
-
|
90
|
+
- ChangeLog.md
|
90
91
|
- Gemfile
|
91
92
|
- README.md
|
92
93
|
- Rakefile
|
@@ -319,12 +320,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
319
320
|
version: '0'
|
320
321
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
321
322
|
requirements:
|
322
|
-
- - '
|
323
|
+
- - '>'
|
323
324
|
- !ruby/object:Gem::Version
|
324
|
-
version:
|
325
|
+
version: 1.3.1
|
325
326
|
requirements: []
|
326
327
|
rubyforge_project: amqp
|
327
|
-
rubygems_version: 2.
|
328
|
+
rubygems_version: 2.0.3
|
328
329
|
signing_key:
|
329
330
|
specification_version: 4
|
330
331
|
summary: Widely used, feature-rich asynchronous RabbitMQ client with batteries included
|
data/CHANGELOG
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
= Version 1.0.0
|
2
|
-
|
3
|
-
* [API] All public API bits deprecated in 0.8.0 are COMPLETELY REMOVED
|
4
|
-
|
5
|
-
= Version 0.9.0 to 0.9.4
|
6
|
-
|
7
|
-
* [BUG] A couple of concurrency issues (race conditions) fixed for apps that actively close and/or reuse channels
|
8
|
-
* [BUG] AMQP::Queue#initialize with :nowait => true no longer fails with NoMethodError
|
9
|
-
* [FEATURE] Automatic recovery mode now works for publishers
|
10
|
-
|
11
|
-
|
12
|
-
= Version 0.8.1
|
13
|
-
|
14
|
-
* [BUG] AMQP::Queue#status can no longer result in queue instance @ivars being changed.
|
15
|
-
* [API] AMQP::Channel#reuse allows channel instance to be reused with a different channel id, may be used to recover from channel-level exceptions.
|
16
|
-
|
17
|
-
|
18
|
-
= Version 0.8.0
|
19
|
-
|
20
|
-
* [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)
|
21
|
-
* [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.
|
22
|
-
* [API] AMQP::Channel#synchronize now can be used to guarantee mutual exclusion of multiple threads on channel instances.
|
23
|
-
* [BUG] Empty messages can finally be published fine. Yes, it took us just 3 years.
|
24
|
-
* [FEATURE] When connected to RabbitMQ, RabbitMQ-specific extensions are required automatically
|
25
|
-
* [FEATURE] AMQP::Session#broker and AMQP::Broker allow for broker capabilities inspection
|
26
|
-
* [FEATURE] New bitset-based channel id allocator
|
27
|
-
* [FEATURE] Multiple consumers per queue with AMQP::Consumer
|
28
|
-
* [FEATURE] Automatic recovery mode for channels
|
29
|
-
* [FEATURE] Network connection recovery callbacks for channels, exchanges, queues, consumers
|
30
|
-
* [API] Connection URI (string) format for vhosts no longer assumes that vhosts begin with a slash (/), learn more at http://bit.ly/mfzwcB
|
31
|
-
* [FEATURE] Returned messages, including header & content via AMQP::Exchange#on_publish. Callback accepts 3 args: basic_return, header, body
|
32
|
-
* [BUG] Ruby 1.8.7-p249 is not supported because of this (p249-specific) Ruby bug: http://bit.ly/iONBmH
|
33
|
-
* [FEATURE] AMQP::Utilities::EventLoopHelper detects app server (if any) being used and starts EventMachine reactor in an optimal way.
|
34
|
-
* [FEATURE] AMQP 0.9.1 support, including tx.* operations class.
|
35
|
-
* [API] Default authentication handler now raises AMQP::PossibleAuthenticationFailureError
|
36
|
-
* [API] AMQP::Channel#initialize now takes 3rd (optional) options hash.
|
37
|
-
* [API] Broker connection class is now AMQP::Session.
|
38
|
-
* [API] AMQP::Error instance now may carry cause, an exception that caused exception in question to be raised.
|
39
|
-
* [API] When initial TCP connection fails, default action is now to raise AMQP::TCPConnectionFailed.
|
40
|
-
* [API] AMQP::BasicClient#reconnect now takes 2nd optional argument, period of waiting in seconds.
|
41
|
-
* [FEATURE] Handlers for initial connection failure, connection loss; channel-level exceptions handlers on Channel instances.
|
42
|
-
* [API] AMQP::Exchange#initialize now accepts :arguments option that takes a hash.
|
43
|
-
* [API] AMQP::Queue#initialize now accepts :arguments option that takes a hash.
|
44
|
-
* [API] AMQP#Logger is deprecated. It will be removed before 1.0 release.
|
45
|
-
* [API] AMQP#fork is deprecated. It will be removed before 1.0 release.
|
46
|
-
* [API] AMQP::RPC is deprecated. It will be removed before 1.0 release.
|
47
|
-
* [FEATURE] Significant improvements to the documentation. From now on lack of/poor documentation is considered a severe bug.
|
48
|
-
* [FEATURE] Support for RabbitMQ extensions to AMQP 0.9.1
|
49
|
-
* [API] AMQP::Exchange#publish now accepts (an optional) callback.
|
50
|
-
* [API] AMQP::Channel.new now accepts (an optional) callback.
|
51
|
-
* [API] AMQP::Header#ack now can acknowledge multiple deliveries
|
52
|
-
* [API] AMQP::Exchange#delete now takes (an optional) block that is called when exchange.delete-ok response arrives.
|
53
|
-
* [API] AMQP::Header now implements #to_hash
|
54
|
-
* [API] AMQP::Queue#pop block now can take 1, 2 or 3 arguments.
|
55
|
-
* [API] AMQP::Queue#purge now takes an optional block which is called when queue.purge-ok response arrives.
|
56
|
-
* [API] AMQP::Queue#delete now takes an optional block which is called when queue.delete-ok response arrives.
|
57
|
-
* [API] AMQP::Queue#delete now accepts :nowait option.
|
58
|
-
* [API] AMQP::Queue#unbind now takes an optional block which is called when queue.unbind-ok response arrives.
|
59
|
-
* [API] AMQP::Queue#unbind now accepts :routing_key as alias to :key. we believe it is a good idea to use AMQP terms.
|
60
|
-
* [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.
|
61
|
-
* [API] AMQP::Channel#recover now takes (an optional) callback that is called when basic.recover-ok is received.
|
62
|
-
* [API] AMQP::Frame is gone.
|
63
|
-
* [API] AMQP::Buffer is gone. Serialization & framing are now handled primarily by amq-protocol.
|
64
|
-
* [API] AMQP::Queue#publish is deprecated.
|
65
|
-
* [API] Name argument for AMQP::Queue.new and Channel#queue is optional.
|
66
|
-
|
67
|
-
= Version 0.7.1
|
68
|
-
|
69
|
-
* [BUG] AMQP gem no longer conflicts with Builder 2.1.2 on Ruby 1.9.
|
70
|
-
All Ruby on Rails 3 users who run Ruby 1.9 are highly recommended
|
71
|
-
to upgrade!
|
72
|
-
* [API] AMQP::Exchange.default no longer caches exchange object between calls
|
73
|
-
because it may lead to very obscure issues when channel that exchange was
|
74
|
-
using is closed (due to connection loss, as part of test suite teardown
|
75
|
-
or in any other way).
|
76
|
-
|
77
|
-
* [API] AMQP::Exchange.default now accepts channel as a parameter.
|
78
|
-
* [API] AMQP::Exchange#channel
|
79
|
-
* [BUG] Basic.Return is not supported by amqp gem yet, but it should not result in obscure exceptions
|
80
|
-
* [API] AMQP::Exchange#publish now supports content type overriding.
|
81
|
-
* [API] Introduce AMQP::Exchange #durable?, #transient?, #auto_deleted? and #passive?
|
82
|
-
* [API] Introduce AMQP::Channel#open?
|
83
|
-
* [BUG] AMQP connection was considered established prematurely.
|
84
|
-
* [API] MQ.logging is removed; please use AMQP.logging from now on.
|
85
|
-
* [API] MQ::Queue class is deprecated; please use AMQP::Queue from now on.
|
86
|
-
* [API] MQ::Exchange class is deprecated; please use AMQP::Exchange from now on.
|
87
|
-
* [API] MQ class is deprecated; please use AMQP::Channel from now on.
|
88
|
-
* [API] require "mq" is deprecated; please use require "amqp" from now on.
|
89
|
-
|
90
|
-
|
91
|
-
= Version 0.7
|
92
|
-
* [BUG] Sync API for queues and exchanges, support for server-generated queues & exchange names (via semi-lazy collection).
|
93
|
-
* [BUG] Sync API for MQ#close (Channel.Close) [issue #34].
|
94
|
-
* [FEATURE] AMQP URL from majek's fork, with some fixes. Example: AMQP.start("amqps://")
|
95
|
-
* [DEVELOP] Added some em-spec-based specs, bin/irb, Gemfile.
|
96
|
-
* [FEATURE] Added MQ::Exchange.default for the default exchange.
|
97
|
-
* [FEATURE] Raise an exception if we're trying to use Basic.Reject with RabbitMQ.
|
98
|
-
* [FEATURE] Fail if an entity is re-declared with different options.
|
99
|
-
* [BUG] Don't reconnect if the credentials are wrong.
|
100
|
-
* [BUG] Fixed an exception which occurred when Queue#bind was called synchronously with a callback.
|
101
|
-
* [DEVELOPMENT] Added a lot of specs (Bacon replaced by rSpec 2).
|