amqp 0.8.0.rc2 → 0.8.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/.gitignore +2 -3
  2. data/.travis.yml +5 -2
  3. data/.yardopts +2 -0
  4. data/CHANGELOG +17 -20
  5. data/Gemfile +7 -5
  6. data/README.textile +67 -29
  7. data/Rakefile +6 -0
  8. data/amqp.gemspec +5 -5
  9. data/docs/08Migration.textile +27 -0
  10. data/docs/Bindings.textile +27 -0
  11. data/docs/ConnectingToTheBroker.textile +277 -0
  12. data/docs/DocumentationGuidesIndex.textile +25 -0
  13. data/docs/Durability.textile +27 -0
  14. data/docs/ErrorHandling.textile +84 -0
  15. data/docs/Exchanges.textile +27 -0
  16. data/docs/GettingStarted.textile +585 -0
  17. data/docs/Queues.textile +27 -0
  18. data/docs/RabbitMQVersions.textile +12 -2
  19. data/docs/Routing.textile +27 -0
  20. data/docs/TLS.textile +27 -0
  21. data/docs/VendorSpecificExtensions.textile +11 -1
  22. data/examples/{various → channels}/open_channel_without_assignment.rb +0 -4
  23. data/examples/channels/prefetch_as_constructor_argument.rb +31 -0
  24. data/examples/channels/qos_aka_prefetch.rb +34 -0
  25. data/examples/channels/qos_aka_prefetch_without_callback.rb +32 -0
  26. data/examples/error_handling/channel_level_exception.rb +47 -0
  27. data/examples/error_handling/channel_level_exception_with_multiple_channels_involved.rb +54 -0
  28. data/examples/error_handling/connection_loss_handler.rb +39 -0
  29. data/examples/error_handling/global_channel_level_exception_handler.rb +65 -0
  30. data/examples/error_handling/handling_authentication_failure_with_a_callback.rb +33 -0
  31. data/examples/error_handling/tcp_connection_failure_handling_with_a_rescue_block.rb +30 -0
  32. data/examples/error_handling/tcp_connection_failure_with_a_callback.rb +28 -0
  33. data/examples/{various → exchanges}/declare_an_exchange_without_assignment.rb +0 -4
  34. data/examples/guides/getting_started/01_hello_world.rb +24 -0
  35. data/examples/guides/getting_started/02_hello_world_dslified.rb +23 -0
  36. data/examples/guides/getting_started/03_babblr.rb +33 -0
  37. data/examples/guides/getting_started/04_weathr.rb +56 -0
  38. data/examples/hello_world.rb +12 -13
  39. data/examples/hello_world_with_eventmachine_in_a_separate_thread.rb +37 -0
  40. data/examples/{various → legacy}/ack.rb +0 -0
  41. data/examples/{various → legacy}/callbacks.rb +0 -0
  42. data/examples/{various → legacy}/clock.rb +0 -0
  43. data/examples/{various → legacy}/hashtable.rb +0 -0
  44. data/examples/{various → legacy}/logger.rb +0 -0
  45. data/examples/{various → legacy}/multiclock.rb +0 -0
  46. data/examples/{various → legacy}/pingpong.rb +0 -2
  47. data/examples/{various → legacy}/primes-simple.rb +0 -0
  48. data/examples/{various → legacy}/primes.rb +0 -2
  49. data/examples/{various → legacy}/stocks.rb +0 -0
  50. data/examples/{various → queues}/automatic_binding_for_default_direct_exchange.rb +4 -0
  51. data/examples/{various → queues}/basic_get.rb +0 -2
  52. data/examples/{various → queues}/declare_a_queue_without_assignment.rb +0 -4
  53. data/examples/queues/declare_and_bind_a_server_named_queue.rb +43 -0
  54. data/examples/{various → queues}/queue_status.rb +3 -8
  55. data/examples/{various → routing}/pubsub.rb +0 -0
  56. data/examples/{various → routing}/weather_updates.rb +1 -1
  57. data/lib/amqp/channel.rb +231 -52
  58. data/lib/amqp/client.rb +6 -3
  59. data/lib/amqp/connection.rb +9 -10
  60. data/lib/amqp/deprecated/fork.rb +3 -3
  61. data/lib/amqp/deprecated/logger.rb +1 -0
  62. data/lib/amqp/deprecated/mq.rb +23 -1
  63. data/lib/amqp/deprecated/rpc.rb +1 -0
  64. data/lib/amqp/exceptions.rb +45 -3
  65. data/lib/amqp/exchange.rb +29 -35
  66. data/lib/amqp/ext/em.rb +0 -7
  67. data/lib/amqp/ext/emfork.rb +3 -2
  68. data/lib/amqp/header.rb +4 -0
  69. data/lib/amqp/queue.rb +96 -33
  70. data/lib/amqp/session.rb +140 -0
  71. data/lib/amqp/version.rb +6 -1
  72. data/spec/integration/automatic_binding_for_default_direct_exchange_spec.rb +7 -7
  73. data/spec/integration/channel_level_exception_with_multiple_channels_spec.rb +69 -0
  74. data/spec/integration/declare_and_immediately_bind_a_server_named_queue_spec.rb +42 -0
  75. data/spec/integration/queue_declaration_spec.rb +8 -24
  76. data/spec/integration/queue_redeclaration_with_incompatible_attributes_spec.rb +43 -0
  77. data/spec/unit/amqp/connection_spec.rb +1 -1
  78. metadata +200 -182
  79. data/lib/amqp/basic_client.rb +0 -27
@@ -0,0 +1,140 @@
1
+ # encoding: utf-8
2
+
3
+ require "amq/client/adapters/event_machine"
4
+
5
+ module AMQP
6
+ # AMQP session represents connection to the broker. Session objects let you define callbacks for
7
+ # various TCP connection lifecycle events, for instance:
8
+ #
9
+ # * Connection is established
10
+ # * Connection has failed
11
+ # * Authentication has failed
12
+ # * Connection is lost (there is a network failure)
13
+ # * AMQP connection is opened
14
+ # * AMQP connection parameters (tuning) are negotiated and accepted by the broker
15
+ # * AMQP connection is properly closed
16
+ #
17
+ # h2. Key methods
18
+ #
19
+ # * {Session#on_connection}
20
+ # * {Session#on_open}
21
+ # * {Session#on_disconnection}
22
+ # * {Session#on_possible_authentication_failure}
23
+ # * {Session#on_tcp_connection_failure}
24
+ # * {Session#on_tcp_connection_loss}
25
+ # * {Session#reconnect}
26
+ # * {Session#connected?}
27
+ #
28
+ #
29
+ # @api public
30
+ class Session < AMQ::Client::EventMachineClient
31
+
32
+ #
33
+ # API
34
+ #
35
+
36
+ # @api plugin
37
+ def connected?
38
+ self.opened?
39
+ end
40
+
41
+ # Reconnect to the broker using current connection settings.
42
+ #
43
+ # @param [Boolean] force Enforce immediate connection
44
+ # @param [Fixnum] period If given, reconnection will be delayed by this period, in seconds.
45
+ # @api plugin
46
+ def reconnect(force = false, period = 2)
47
+ # we do this to make sure this method shows up in our documentation
48
+ # this method is too important to leave out and YARD currently does not
49
+ # support cross-referencing to dependencies. MK.
50
+ super(force, period)
51
+ end # reconnect(force = false)
52
+
53
+
54
+ # Defines a callback that will be executed when AMQP connection is considered open,
55
+ # after client and broker has agreed on max channel identifier and maximum allowed frame
56
+ # size. You can define more than one callback.
57
+ #
58
+ # @see #on_open
59
+ # @api public
60
+ def on_connection(&block)
61
+ # defined here to make this method appear in YARD documentation. MK.
62
+ super(&block)
63
+ end # on_connection(&block)
64
+
65
+ # Defines a callback that will be executed when AMQP connection is considered open,
66
+ # before client and broker has agreed on max channel identifier and maximum allowed frame
67
+ # size. You can define more than one callback.
68
+ #
69
+ # @see #on_connection
70
+ # @api public
71
+ def on_open(&block)
72
+ # defined here to make this method appear in YARD documentation. MK.
73
+ super(&block)
74
+ end # on_open(&block)
75
+
76
+ # Defines a callback that will be run when broker confirms connection termination
77
+ # (client receives connection.close-ok). You can define more than one callback.
78
+ #
79
+ # @api public
80
+ def on_disconnection(&block)
81
+ # defined here to make this method appear in YARD documentation. MK.
82
+ super(&block)
83
+ end # on_disconnection(&block)
84
+
85
+ # Defines a callback that will be run when initial TCP connection fails.
86
+ # You can define only one callback.
87
+ #
88
+ # @api public
89
+ def on_tcp_connection_failure(&block)
90
+ # defined here to make this method appear in YARD documentation. MK.
91
+ super(&block)
92
+ end
93
+
94
+ # Defines a callback that will be run when initial TCP connection fails.
95
+ # You can define only one callback.
96
+ #
97
+ # @api public
98
+ def on_tcp_connection_loss(&block)
99
+ # defined here to make this method appear in YARD documentation. MK.
100
+ super(&block)
101
+ end
102
+
103
+ # Defines a callback that will be run when TCP connection is closed before authentication
104
+ # finishes. Usually this means authentication failure. You can define only one callback.
105
+ #
106
+ # @api public
107
+ def on_possible_authentication_failure(&block)
108
+ # defined here to make this method appear in YARD documentation. MK.
109
+ super(&block)
110
+ end
111
+
112
+
113
+ # Properly close connection with AMQ broker, as described in
114
+ # section 2.2.4 of the {http://bit.ly/hw2ELX AMQP 0.9.1 specification}.
115
+ #
116
+ # @api plugin
117
+ # @see #close_connection
118
+ def disconnect(reply_code = 200, reply_text = "Goodbye", &block)
119
+ # defined here to make this method appear in YARD documentation. MK.
120
+ super(reply_code, reply_text, &block)
121
+ end
122
+ alias close disconnect
123
+
124
+
125
+
126
+ #
127
+ # Implementation
128
+ #
129
+
130
+ # Overrides TCP connection failure exception to one that inherits from AMQP::Error
131
+ # and thus is backwards compatible.
132
+ #
133
+ # @private
134
+ # @api plugin
135
+ # @return [Class] AMQP::TCPConnectionFailed
136
+ def self.tcp_connection_failure_exception_class
137
+ @tcp_connection_failure_exception_class ||= AMQP::TCPConnectionFailed
138
+ end # self.tcp_connection_failure_exception_class
139
+ end # Session
140
+ end # AMQP
@@ -1,5 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module AMQP
4
- VERSION = '0.8.0.rc2'
4
+ # AMQP gem version. Not to be confused with AMQP protocol version
5
+ # it implements. For that, see {AMQ::Protocol::VERSION}
6
+ #
7
+ # @see AMQ::Protocol::VERSION
8
+ # @return [String] AMQP gem version
9
+ VERSION = '0.8.0.rc3'
5
10
  end
@@ -10,17 +10,17 @@ describe "Queue that was bound to default direct exchange thanks to Automatic Mo
10
10
 
11
11
  include EventedSpec::AMQPSpec
12
12
 
13
- default_timeout 2
13
+ default_timeout 3
14
14
 
15
15
  amqp_before do
16
16
  @channel = AMQP::Channel.new
17
17
  @channel.should be_open
18
- @channel.on_error do |*args|
19
- puts "Channel-level error!"
18
+ @channel.on_error do |ch, close|
19
+ raise "Channel-level error!: #{close.inspect}"
20
20
  end
21
21
 
22
- @queue1 = @channel.queue("queue1", :auto_delete => true)
23
- @queue2 = @channel.queue("queue2", :auto_delete => true)
22
+ @queue1 = @channel.queue("amqpgem.tests.integration.queue1", :auto_delete => true)
23
+ @queue2 = @channel.queue("amqpgem.tests.integration.queue2", :auto_delete => true)
24
24
 
25
25
  # Rely on default direct exchange binding, see section 2.1.2.4 Automatic Mode in AMQP 0.9.1 spec.
26
26
  @exchange = AMQP::Exchange.default(@channel)
@@ -58,12 +58,12 @@ describe "Queue that was bound to default direct exchange thanks to Automatic Mo
58
58
  @exchange.publish("some white noise", :routing_key => "killa key")
59
59
  end
60
60
 
61
- delayed(0.3) {
61
+ delayed(0.6) {
62
62
  # We never subscribe to it, hence, need to delete manually
63
63
  @queue2.delete
64
64
  }
65
65
 
66
- done(0.5) {
66
+ done(0.9) {
67
67
  number_of_received_messages.should == expected_number_of_messages
68
68
  }
69
69
  end # it
@@ -0,0 +1,69 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe AMQP do
6
+
7
+ #
8
+ # Environment
9
+ #
10
+
11
+ include EventedSpec::AMQPSpec
12
+
13
+ default_timeout 5
14
+
15
+
16
+ #
17
+ # Examples
18
+ #
19
+
20
+
21
+ context "when queue is redeclared with different attributes across two channels" do
22
+ let(:name) { "amqp-gem.nondurable.queue" }
23
+ let(:options) {
24
+ { :durable => false, :passive => false }
25
+ }
26
+ let(:different_options) {
27
+ { :durable => true, :passive => false }
28
+ }
29
+
30
+
31
+ it "should trigger channel-level #on_error callback" do
32
+ @channel = AMQP::Channel.new
33
+ @channel.on_error do |ch, close|
34
+ puts "This should never happen"
35
+ end
36
+ @q1 = @channel.queue(name, options)
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
+ # Small delays to ensure the order of execution
46
+ delayed(0.1) {
47
+ @other_channel = AMQP::Channel.new
48
+ @other_channel.on_error do |ch, close|
49
+ @callback_fired = true
50
+ end
51
+ puts "other_channel.id = #{@other_channel.id}"
52
+ @q2 = @other_channel.queue(name, different_options)
53
+ }
54
+
55
+ delayed(0.3) {
56
+ @q1.delete
57
+ @q2.delete
58
+ }
59
+
60
+ done(0.4) {
61
+ @callback_fired.should be_true
62
+ @global_callback_fired.should be_true
63
+ # looks like there is a difference between platforms/machines
64
+ # so check either one. MK.
65
+ @other_channel.closed?.should be_true
66
+ }
67
+ end
68
+ end
69
+ end # describe AMQP
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "Server-named", AMQP::Queue do
6
+
7
+ #
8
+ # Environment
9
+ #
10
+
11
+ include EventedSpec::AMQPSpec
12
+
13
+ default_timeout 5
14
+
15
+ amqp_before do
16
+ @channel = AMQP::Channel.new
17
+ end
18
+
19
+
20
+ #
21
+ # Examples
22
+ #
23
+
24
+
25
+ it "delays binding until after queue.declare-ok arrives" do
26
+ mailbox = []
27
+ exchange = @channel.fanout("amq.fanout")
28
+ input = "Independencia de resolución, ¿una realidad en Mac OS X Lion?"
29
+
30
+ @channel.queue("", :auto_delete => true).bind(exchange).subscribe do |header, body|
31
+ mailbox << body
32
+ end
33
+
34
+ delayed(0.3) {
35
+ exchange.publish(input)
36
+ }
37
+
38
+ done(0.5) {
39
+ mailbox.size.should == 1
40
+ }
41
+ end
42
+ end
@@ -50,9 +50,13 @@ describe AMQP do
50
50
 
51
51
 
52
52
  context "when queue is redeclared with different attributes" do
53
- let(:name) { "amqp-gem.nondurable.queue" }
54
- let(:options) { {:durable => false, :passive => false} }
55
- let(:different_options) { {:durable => true, :passive => false} }
53
+ let(:name) { "amqp-gem.nondurable.queue" }
54
+ let(:options) {
55
+ { :durable => false, :passive => false }
56
+ }
57
+ let(:different_options) {
58
+ { :durable => true, :passive => false}
59
+ }
56
60
  amqp_before do
57
61
  @queue = @channel.queue(name, options)
58
62
  delayed(0.25) { @queue.delete }
@@ -61,32 +65,12 @@ describe AMQP do
61
65
  context "on the same channel" do
62
66
  it "should raise ruby exception" do
63
67
  expect {
64
- @other_queue = @channel.queue(name, different_options)
68
+ @channel.queue(name, different_options)
65
69
  }.to raise_error(AMQP::IncompatibleOptionsError)
66
70
  @queue.delete
67
71
  done(0.2)
68
72
  end
69
73
  end
70
-
71
- context "on different channels (or even in different processes)" do
72
- amqp_before { @other_channel = AMQP::Channel.new }
73
-
74
- it "should not raise ruby exception" do
75
- expect {
76
- @other_queue = @other_channel.queue(name, different_options)
77
- }.to_not raise_error
78
- done
79
- end
80
-
81
- it "should trigger channel-level #on_error callback" do
82
- @other_channel.on_error {|*args| @callback_fired = true }
83
- @other_queue = @other_channel.queue(name, different_options)
84
- done(0.35) {
85
- @callback_fired.should be_true
86
- @other_channel.should be_closed
87
- }
88
- end
89
- end
90
74
  end
91
75
 
92
76
  context "when passive option is used" do
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe AMQP do
6
+
7
+ #
8
+ # Environment
9
+ #
10
+
11
+ include EventedSpec::AMQPSpec
12
+
13
+ default_timeout 5
14
+
15
+
16
+ #
17
+ # Examples
18
+ #
19
+
20
+ context "when queue is redeclared with different attributes" do
21
+ let(:name) { "amqp-gem.nondurable.queue" }
22
+ let(:options) {
23
+ { :durable => false, :passive => false }
24
+ }
25
+ let(:different_options) {
26
+ { :durable => true, :passive => false}
27
+ }
28
+
29
+
30
+ it "should raise AMQP::IncompatibleOptionsError" do
31
+ channel = AMQP::Channel.new
32
+ channel.on_error do |ch, close|
33
+ @callback_fired = true
34
+ end
35
+
36
+ channel.queue(name, options)
37
+ expect {
38
+ channel.queue(name, different_options)
39
+ }.to raise_error(AMQP::IncompatibleOptionsError)
40
+ done
41
+ end
42
+ end
43
+ end # describe AMQP
@@ -30,7 +30,7 @@ describe AMQP, 'class object' do
30
30
  }
31
31
  end
32
32
 
33
- its(:client) { should == AMQP::BasicClient }
33
+ its(:client) { should == AMQP::Session }
34
34
 
35
35
 
36
36
 
metadata CHANGED
@@ -1,202 +1,220 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: amqp
3
- version: !ruby/object:Gem::Version
4
- version: 0.8.0.rc2
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease: 6
5
+ version: 0.8.0.rc3
6
6
  platform: ruby
7
- authors:
8
- - Aman Gupta
9
- - Jakub Stastny aka botanicus
10
- - Michael S. Klishin
7
+ authors:
8
+ - Aman Gupta
9
+ - Jakub Stastny aka botanicus
10
+ - Michael S. Klishin
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain:
14
- date: 2011-04-18 00:00:00.000000000
14
+ date: 2011-04-30 00:00:00
15
15
  default_executable:
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
18
- name: eventmachine
19
- requirement: &2168550180 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - ~>
23
- - !ruby/object:Gem::Version
24
- version: 0.12.10
25
- type: :runtime
26
- prerelease: false
27
- version_requirements: *2168550180
28
- - !ruby/object:Gem::Dependency
29
- name: amq-client
30
- requirement: &2168549540 !ruby/object:Gem::Requirement
31
- none: false
32
- requirements:
33
- - - ! '>='
34
- - !ruby/object:Gem::Version
35
- version: 0.7.0.alpha2
36
- type: :runtime
37
- prerelease: false
38
- version_requirements: *2168549540
39
- description: Asynchronous AMQP 0.9.1 client for Ruby. Built on top of Eventmachine.
40
- email:
41
- - michael@novemberain.com
42
- - stastny@101ideas.cz
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: eventmachine
19
+ prerelease: false
20
+ requirement: &id001 !ruby/object:Gem::Requirement
21
+ none: false
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: "0"
26
+ type: :runtime
27
+ version_requirements: *id001
28
+ - !ruby/object:Gem::Dependency
29
+ name: amq-client
30
+ prerelease: false
31
+ requirement: &id002 !ruby/object:Gem::Requirement
32
+ none: false
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 0.7.0.alpha13
37
+ type: :runtime
38
+ version_requirements: *id002
39
+ description: Widely used, feature-rich asynchronous AMQP 0.9.1 client with batteries included
40
+ email:
41
+ - michael@novemberain.com
42
+ - stastny@101ideas.cz
43
43
  executables: []
44
+
44
45
  extensions: []
45
- extra_rdoc_files:
46
- - README.textile
47
- files:
48
- - .gitignore
49
- - .rspec
50
- - .travis.yml
51
- - .yardopts
52
- - CHANGELOG
53
- - CONTRIBUTORS
54
- - Gemfile
55
- - README.textile
56
- - Rakefile
57
- - amqp.gemspec
58
- - bin/cleanify.rb
59
- - bin/irb
60
- - bin/jenkins.sh
61
- - bin/set_test_suite_realms_up.sh
62
- - docs/RabbitMQVersions.textile
63
- - docs/VendorSpecificExtensions.textile
64
- - examples/extensions/rabbitmq/per_queue_message_ttl.rb
65
- - examples/extensions/rabbitmq/publisher_confirmations_with_transient_messages.rb
66
- - examples/hello_world.rb
67
- - examples/real-world/task-queue/README.textile
68
- - examples/real-world/task-queue/consumer.rb
69
- - examples/real-world/task-queue/producer.rb
70
- - examples/tls_certificates/client/cert.pem
71
- - examples/tls_certificates/client/key.pem
72
- - examples/tls_certificates/client/keycert.p12
73
- - examples/tls_certificates/client/req.pem
74
- - examples/tls_certificates/server/cert.pem
75
- - examples/tls_certificates/server/key.pem
76
- - examples/tls_certificates/server/keycert.p12
77
- - examples/tls_certificates/server/req.pem
78
- - examples/tls_certificates/testca/cacert.cer
79
- - examples/tls_certificates/testca/cacert.pem
80
- - examples/tls_certificates/testca/certs/01.pem
81
- - examples/tls_certificates/testca/certs/02.pem
82
- - examples/tls_certificates/testca/index.txt
83
- - examples/tls_certificates/testca/index.txt.attr
84
- - examples/tls_certificates/testca/index.txt.attr.old
85
- - examples/tls_certificates/testca/index.txt.old
86
- - examples/tls_certificates/testca/openssl.cnf
87
- - examples/tls_certificates/testca/private/cakey.pem
88
- - examples/tls_certificates/testca/serial
89
- - examples/tls_certificates/testca/serial.old
90
- - examples/various/ack.rb
91
- - examples/various/automatic_binding_for_default_direct_exchange.rb
92
- - examples/various/basic_get.rb
93
- - examples/various/callbacks.rb
94
- - examples/various/clock.rb
95
- - examples/various/declare_a_queue_without_assignment.rb
96
- - examples/various/declare_an_exchange_without_assignment.rb
97
- - examples/various/hashtable.rb
98
- - examples/various/logger.rb
99
- - examples/various/multiclock.rb
100
- - examples/various/open_channel_without_assignment.rb
101
- - examples/various/pingpong.rb
102
- - examples/various/primes-simple.rb
103
- - examples/various/primes.rb
104
- - examples/various/pubsub.rb
105
- - examples/various/queue_status.rb
106
- - examples/various/stocks.rb
107
- - examples/various/weather_updates.rb
108
- - lib/amqp.rb
109
- - lib/amqp/basic_client.rb
110
- - lib/amqp/channel.rb
111
- - lib/amqp/client.rb
112
- - lib/amqp/connection.rb
113
- - lib/amqp/deprecated/fork.rb
114
- - lib/amqp/deprecated/logger.rb
115
- - lib/amqp/deprecated/mq.rb
116
- - lib/amqp/deprecated/rpc.rb
117
- - lib/amqp/exceptions.rb
118
- - lib/amqp/exchange.rb
119
- - lib/amqp/ext/em.rb
120
- - lib/amqp/ext/emfork.rb
121
- - lib/amqp/extensions/rabbitmq.rb
122
- - lib/amqp/header.rb
123
- - lib/amqp/logger.rb
124
- - lib/amqp/queue.rb
125
- - lib/amqp/rpc.rb
126
- - lib/amqp/version.rb
127
- - lib/mq.rb
128
- - lib/mq/logger.rb
129
- - lib/mq/rpc.rb
130
- - spec/integration/authentication_spec.rb
131
- - spec/integration/automatic_binding_for_default_direct_exchange_spec.rb
132
- - spec/integration/basic_get_spec.rb
133
- - spec/integration/channel_close_spec.rb
134
- - spec/integration/exchange_declaration_spec.rb
135
- - spec/integration/extensions/basic_return_spec.rb
136
- - spec/integration/queue_declaration_spec.rb
137
- - spec/integration/queue_exclusivity_spec.rb
138
- - spec/integration/reply_queue_communication_spec.rb
139
- - spec/integration/store_and_forward_spec.rb
140
- - spec/integration/topic_subscription_spec.rb
141
- - spec/integration/workload_distribution_spec.rb
142
- - spec/spec_helper.rb
143
- - spec/unit/amqp/basic_spec.rb
144
- - spec/unit/amqp/connection_spec.rb
145
- - tasks.rb
46
+
47
+ extra_rdoc_files:
48
+ - README.textile
49
+ - docs/08Migration.textile
50
+ - docs/Bindings.textile
51
+ - docs/ConnectingToTheBroker.textile
52
+ - docs/DocumentationGuidesIndex.textile
53
+ - docs/Durability.textile
54
+ - docs/ErrorHandling.textile
55
+ - docs/Exchanges.textile
56
+ - docs/GettingStarted.textile
57
+ - docs/Queues.textile
58
+ - docs/RabbitMQVersions.textile
59
+ - docs/Routing.textile
60
+ - docs/TLS.textile
61
+ - docs/VendorSpecificExtensions.textile
62
+ files:
63
+ - .gitignore
64
+ - .rspec
65
+ - .travis.yml
66
+ - .yardopts
67
+ - CHANGELOG
68
+ - CONTRIBUTORS
69
+ - Gemfile
70
+ - README.textile
71
+ - Rakefile
72
+ - amqp.gemspec
73
+ - bin/cleanify.rb
74
+ - bin/irb
75
+ - bin/jenkins.sh
76
+ - bin/set_test_suite_realms_up.sh
77
+ - docs/08Migration.textile
78
+ - docs/Bindings.textile
79
+ - docs/ConnectingToTheBroker.textile
80
+ - docs/DocumentationGuidesIndex.textile
81
+ - docs/Durability.textile
82
+ - docs/ErrorHandling.textile
83
+ - docs/Exchanges.textile
84
+ - docs/GettingStarted.textile
85
+ - docs/Queues.textile
86
+ - docs/RabbitMQVersions.textile
87
+ - docs/Routing.textile
88
+ - docs/TLS.textile
89
+ - docs/VendorSpecificExtensions.textile
90
+ - examples/channels/open_channel_without_assignment.rb
91
+ - examples/channels/prefetch_as_constructor_argument.rb
92
+ - examples/channels/qos_aka_prefetch.rb
93
+ - examples/channels/qos_aka_prefetch_without_callback.rb
94
+ - examples/error_handling/channel_level_exception.rb
95
+ - examples/error_handling/channel_level_exception_with_multiple_channels_involved.rb
96
+ - examples/error_handling/connection_loss_handler.rb
97
+ - examples/error_handling/global_channel_level_exception_handler.rb
98
+ - examples/error_handling/handling_authentication_failure_with_a_callback.rb
99
+ - examples/error_handling/tcp_connection_failure_handling_with_a_rescue_block.rb
100
+ - examples/error_handling/tcp_connection_failure_with_a_callback.rb
101
+ - examples/exchanges/declare_an_exchange_without_assignment.rb
102
+ - examples/extensions/rabbitmq/per_queue_message_ttl.rb
103
+ - examples/extensions/rabbitmq/publisher_confirmations_with_transient_messages.rb
104
+ - examples/guides/getting_started/01_hello_world.rb
105
+ - examples/guides/getting_started/02_hello_world_dslified.rb
106
+ - examples/guides/getting_started/03_babblr.rb
107
+ - examples/guides/getting_started/04_weathr.rb
108
+ - examples/hello_world.rb
109
+ - examples/hello_world_with_eventmachine_in_a_separate_thread.rb
110
+ - examples/legacy/ack.rb
111
+ - examples/legacy/callbacks.rb
112
+ - examples/legacy/clock.rb
113
+ - examples/legacy/hashtable.rb
114
+ - examples/legacy/logger.rb
115
+ - examples/legacy/multiclock.rb
116
+ - examples/legacy/pingpong.rb
117
+ - examples/legacy/primes-simple.rb
118
+ - examples/legacy/primes.rb
119
+ - examples/legacy/stocks.rb
120
+ - examples/queues/automatic_binding_for_default_direct_exchange.rb
121
+ - examples/queues/basic_get.rb
122
+ - examples/queues/declare_a_queue_without_assignment.rb
123
+ - examples/queues/declare_and_bind_a_server_named_queue.rb
124
+ - examples/queues/queue_status.rb
125
+ - examples/real-world/task-queue/README.textile
126
+ - examples/real-world/task-queue/consumer.rb
127
+ - examples/real-world/task-queue/producer.rb
128
+ - examples/routing/pubsub.rb
129
+ - examples/routing/weather_updates.rb
130
+ - examples/tls_certificates/client/cert.pem
131
+ - examples/tls_certificates/client/key.pem
132
+ - examples/tls_certificates/client/keycert.p12
133
+ - examples/tls_certificates/client/req.pem
134
+ - examples/tls_certificates/server/cert.pem
135
+ - examples/tls_certificates/server/key.pem
136
+ - examples/tls_certificates/server/keycert.p12
137
+ - examples/tls_certificates/server/req.pem
138
+ - examples/tls_certificates/testca/cacert.cer
139
+ - examples/tls_certificates/testca/cacert.pem
140
+ - examples/tls_certificates/testca/certs/01.pem
141
+ - examples/tls_certificates/testca/certs/02.pem
142
+ - examples/tls_certificates/testca/index.txt
143
+ - examples/tls_certificates/testca/index.txt.attr
144
+ - examples/tls_certificates/testca/index.txt.attr.old
145
+ - examples/tls_certificates/testca/index.txt.old
146
+ - examples/tls_certificates/testca/openssl.cnf
147
+ - examples/tls_certificates/testca/private/cakey.pem
148
+ - examples/tls_certificates/testca/serial
149
+ - examples/tls_certificates/testca/serial.old
150
+ - lib/amqp.rb
151
+ - lib/amqp/channel.rb
152
+ - lib/amqp/client.rb
153
+ - lib/amqp/connection.rb
154
+ - lib/amqp/deprecated/fork.rb
155
+ - lib/amqp/deprecated/logger.rb
156
+ - lib/amqp/deprecated/mq.rb
157
+ - lib/amqp/deprecated/rpc.rb
158
+ - lib/amqp/exceptions.rb
159
+ - lib/amqp/exchange.rb
160
+ - lib/amqp/ext/em.rb
161
+ - lib/amqp/ext/emfork.rb
162
+ - lib/amqp/extensions/rabbitmq.rb
163
+ - lib/amqp/header.rb
164
+ - lib/amqp/logger.rb
165
+ - lib/amqp/queue.rb
166
+ - lib/amqp/rpc.rb
167
+ - lib/amqp/session.rb
168
+ - lib/amqp/version.rb
169
+ - lib/mq.rb
170
+ - lib/mq/logger.rb
171
+ - lib/mq/rpc.rb
172
+ - spec/integration/authentication_spec.rb
173
+ - spec/integration/automatic_binding_for_default_direct_exchange_spec.rb
174
+ - spec/integration/basic_get_spec.rb
175
+ - spec/integration/channel_close_spec.rb
176
+ - spec/integration/channel_level_exception_with_multiple_channels_spec.rb
177
+ - spec/integration/declare_and_immediately_bind_a_server_named_queue_spec.rb
178
+ - spec/integration/exchange_declaration_spec.rb
179
+ - spec/integration/extensions/basic_return_spec.rb
180
+ - spec/integration/queue_declaration_spec.rb
181
+ - spec/integration/queue_exclusivity_spec.rb
182
+ - spec/integration/queue_redeclaration_with_incompatible_attributes_spec.rb
183
+ - spec/integration/reply_queue_communication_spec.rb
184
+ - spec/integration/store_and_forward_spec.rb
185
+ - spec/integration/topic_subscription_spec.rb
186
+ - spec/integration/workload_distribution_spec.rb
187
+ - spec/spec_helper.rb
188
+ - spec/unit/amqp/basic_spec.rb
189
+ - spec/unit/amqp/connection_spec.rb
190
+ - tasks.rb
146
191
  has_rdoc: true
147
192
  homepage: http://github.com/ruby-amqp/amqp
148
193
  licenses: []
149
- post_install_message: ! "[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Exchange#initialize
150
- now accepts :arguments option that takes a hash. Brokers\n[\e[32mVersion 0.8.0\e[0m]
151
- [API] AMQP::Queue#initialize now accepts :arguments option that takes a hash. RabbitMQ\n[\e[32mVersion
152
- 0.8.0\e[0m] [API] AMQP#Logger is deprecated. It will be removed before 1.0 release.\n[\e[32mVersion
153
- 0.8.0\e[0m] [API] AMQP#fork is deprecated. It will be removed before 1.0 release.\n[\e[32mVersion
154
- 0.8.0\e[0m] [API] AMQP::RPC is deprecated. It will be removed before 1.0 release.\n[\e[32mVersion
155
- 0.8.0\e[0m] [FEATURE] Significant improvements to the documentation\n[\e[32mVersion
156
- 0.8.0\e[0m] [FEATURE] Support for RabbitMQ extensions to AMQP 0.9.1\n[\e[32mVersion
157
- 0.8.0\e[0m] [API] AMQP::Exchange#publish now accepts (an optional) block that is
158
- called as soon as message\n[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Channel.new now
159
- accepts (an optional) block and yields newly opened channel to it as soon as\n[\e[32mVersion
160
- 0.8.0\e[0m] [API] AMQP::Header#ack now can acknowledge multiple deliveries\n[\e[32mVersion
161
- 0.8.0\e[0m] [API] AMQP::Exchange#delete now takes (an optional) block that is called
162
- when exchange.delete-ok response arrives.\n[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Header
163
- now implements #to_hash\n[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#pop block
164
- now can take 1, 2 or 3 arguments.\n[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#purge
165
- \ now takes an optional block which is called when queue.purge-ok response arrives.\n[\e[32mVersion
166
- 0.8.0\e[0m] [API] AMQP::Queue#delete now takes an optional block which is called
167
- when queue.delete-ok response arrives.\n[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#delete
168
- now accepts :nowait option.\n[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Queue#unbind
169
- now takes an optional block which is called when queue.unbind-ok response arrives.\n[\e[32mVersion
170
- 0.8.0\e[0m] [API] AMQP::Queue#unbind now accepts :routing_key as alias to :key.
171
- we believe it is a good idea to use AMQP terms.\n[\e[32mVersion 0.8.0\e[0m] [API]
172
- AMQP::Channel#prefetch now takes (an optional) 2nd parameter that specifies\n[\e[32mVersion
173
- 0.8.0\e[0m] [API] AMQP::Channel#recover now takes (an optional) callback that is
174
- called when\n[\e[32mVersion 0.8.0\e[0m] [API] AMQP::Frame is gone.\n[\e[32mVersion
175
- 0.8.0\e[0m] [API] AMQP::Buffer is gone. Serialization & framing are now handled
176
- primarily by amq-protocol.\n[\e[32mVersion 0.8.0\e[0m] [FEATURE] AMQP gem is now
177
- AMQP 0.9.1 compatible: it runs atop of amq-client gem\n[\e[32mVersion 0.8.0\e[0m]
178
- [API] AMQP::Queue#publish is deprecated.\n[\e[32mVersion 0.8.0\e[0m] [API] Name
179
- argument for AMQP::Queue.new and Channel#queue is optional.\n"
180
- rdoc_options:
181
- - --include=examples --main README.textile
182
- require_paths:
183
- - lib
184
- required_ruby_version: !ruby/object:Gem::Requirement
194
+
195
+ post_install_message:
196
+ rdoc_options:
197
+ - --include=examples --main README.textile
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
185
201
  none: false
186
- requirements:
187
- - - ! '>='
188
- - !ruby/object:Gem::Version
189
- version: '0'
190
- required_rubygems_version: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: "0"
206
+ required_rubygems_version: !ruby/object:Gem::Requirement
191
207
  none: false
192
- requirements:
193
- - - ! '>'
194
- - !ruby/object:Gem::Version
195
- version: 1.3.1
208
+ requirements:
209
+ - - ">"
210
+ - !ruby/object:Gem::Version
211
+ version: 1.3.1
196
212
  requirements: []
213
+
197
214
  rubyforge_project: amqp
198
- rubygems_version: 1.6.2
215
+ rubygems_version: 1.5.1
199
216
  signing_key:
200
217
  specification_version: 3
201
218
  summary: AMQP client implementation in Ruby/EventMachine.
202
219
  test_files: []
220
+