amqp 0.8.0.rc14 → 0.8.0.rc15
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +3 -3
- data/Gemfile +9 -6
- data/README.md +18 -12
- data/amqp.gemspec +2 -2
- data/bin/docup +3 -0
- data/docs/08Migration.textile +67 -5
- data/docs/AMQP091ModelExplained.textile +138 -101
- data/docs/Bindings.textile +109 -8
- data/docs/ConnectingToTheBroker.textile +8 -0
- data/docs/ConnectionEncryptionWithTLS.textile +5 -0
- data/docs/DocumentationGuidesIndex.textile +21 -5
- data/docs/Durability.textile +3 -1
- data/docs/ErrorHandling.textile +20 -0
- data/docs/Exchanges.textile +7 -1
- data/docs/GettingStarted.textile +10 -0
- data/docs/PatternsAndUseCases.textile +6 -0
- data/docs/Queues.textile +7 -1
- data/docs/RabbitMQVersions.textile +6 -1
- data/docs/RunningTests.textile +8 -3
- data/docs/Troubleshooting.textile +31 -0
- data/docs/VendorSpecificExtensions.textile +137 -6
- data/examples/extensions/rabbitmq/per_queue_message_ttl.rb +24 -25
- data/examples/extensions/rabbitmq/publisher_confirmations_with_transient_messages.rb +11 -20
- data/examples/extensions/rabbitmq/using_alternate_exchanges.rb +28 -0
- data/examples/hello_world.rb +1 -1
- data/lib/amqp.rb +1 -0
- data/lib/amqp/compatibility/ruby187_patchlevel_check.rb +2 -0
- data/lib/amqp/integration/rails.rb +17 -0
- data/lib/amqp/version.rb +1 -1
- data/spec/integration/authentication_spec.rb +2 -2
- data/spec/integration/fanout_exchange_routing_spec.rb +43 -199
- data/spec/integration/multiple_consumers_per_queue_spec.rb +7 -7
- data/spec/integration/regressions/concurrent_publishing_on_the_same_channel_spec.rb +1 -1
- data/spec/integration/stress/publishing_of_messages_with_incrementing_sizes_spec.rb +50 -0
- metadata +13 -9
data/docs/Bindings.textile
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# @title Ruby AMQP gem: Bindings
|
2
2
|
|
3
|
-
h1.
|
3
|
+
h1. Working With Bindings
|
4
4
|
|
5
5
|
h2. About this guide
|
6
6
|
|
7
7
|
This guide covers bindings in AMQP 0.9.1, what they are, what role do they play and how to accomplish typical operations using
|
8
8
|
Ruby amqp gem.
|
9
9
|
|
10
|
+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
10
11
|
|
11
12
|
h2. Covered versions
|
12
13
|
|
@@ -16,27 +17,127 @@ This guide covers "Ruby amqp gem":http://github.com/ruby-amqp/amqp v0.8.0 and la
|
|
16
17
|
|
17
18
|
h2. Bindings in AMQP 0.9.1
|
18
19
|
|
19
|
-
|
20
|
+
Bindings are rules that exchanges use (among other things) to route messages to queues. To instruct an exchange E to route messages to a queue Q,
|
21
|
+
Q has to _be bound_ to E. Bindings may have an optional _routing key_ attribute used by some exchange types. The purpose of the routing key is to
|
22
|
+
selectively match only specific (matching) messages published to an exchange to the bound queue. In other words, the routing key acts like a filter.
|
20
23
|
|
24
|
+
Learn more about how bindings fit into the AMQP Model in the {file:docs/AMQP091ModelExplained.textile AMQP 0.9.1 Model Explained} documentation guide.
|
21
25
|
|
22
|
-
h2. One day in life of an AMQP 0.9.1 message
|
23
26
|
|
24
|
-
|
27
|
+
h2. What Are AMQP 0.9.1 Bindings
|
28
|
+
|
29
|
+
Bindings are rules that exchanges use (among other things) to route messages to queues. To instruct an exchange E to route messages to a queue Q,
|
30
|
+
Q has to _be bound_ to E. Bindings may have an optional _routing key_ attribute used by some exchange types. The purpose of the routing key is to
|
31
|
+
selectively match only specific (matching) messages published to an exchange to the bound queue. In other words, the routing key acts like a filter.
|
32
|
+
|
33
|
+
To draw an analogy:
|
34
|
+
|
35
|
+
* Queue is like your destination in New York city
|
36
|
+
* Exchange is like JFK airport
|
37
|
+
* Bindings are routes from JFK to your destination. There can be none or more than one way to reach it
|
38
|
+
|
39
|
+
Some exchange types use routing key while some others do not (and route messages unconditionally or based on message metadata).
|
40
|
+
If AMQP message cannot be routed to any queue (for example, because there are no bindings for the exchange it was published to), it is either
|
41
|
+
dropped or returned to the publisher, depending on message attributes the publisher has set.
|
42
|
+
|
43
|
+
If application wants to connect a queue to an exchange, it needs to _bind_ them. The opposite operation is called _unbinding_.
|
25
44
|
|
26
45
|
|
27
46
|
h2. Binding queues to exchanges
|
28
47
|
|
29
|
-
|
48
|
+
In order to receive messages, a queue needs to be bound to at least one exchange. Most of the time binding is explcit
|
49
|
+
(done by applications). To bind a queue to an exchange, use {AMQP::Queue#bind} where the argument passed can be
|
50
|
+
either an {AMQP::Exchange} instance or a string.
|
51
|
+
|
52
|
+
<pre>
|
53
|
+
<code>
|
54
|
+
queue.bind(exchange) do |bind_ok|
|
55
|
+
puts "Just bound #{queue.name} to #{exchange.name}"
|
56
|
+
end
|
57
|
+
</code>
|
58
|
+
</pre>
|
59
|
+
|
60
|
+
Full example:
|
61
|
+
<script src="https://gist.github.com/998727.js"> </script>
|
62
|
+
|
63
|
+
The same example using a string without callback:
|
64
|
+
|
65
|
+
<pre>
|
66
|
+
<code>
|
67
|
+
queue.bind("amq.fanout")
|
68
|
+
</code>
|
69
|
+
</pre>
|
70
|
+
|
71
|
+
Full example:
|
72
|
+
<script src="https://gist.github.com/998729.js"> </script>
|
30
73
|
|
31
74
|
|
32
75
|
h2. Unbinding queues from exchanges
|
33
76
|
|
34
|
-
|
77
|
+
To unbind a queue from an exchange use {AMQP::Queue#unbind}:
|
78
|
+
|
79
|
+
<pre>
|
80
|
+
<code>
|
81
|
+
queue.unbind(exchange)
|
82
|
+
</code>
|
83
|
+
</pre>
|
84
|
+
|
85
|
+
Full example:
|
86
|
+
<script src="https://gist.github.com/998742.js"> </script>
|
87
|
+
|
88
|
+
<span class="note">
|
89
|
+
Trying to unbind a queue from an exchange that the queue was never bound to will result in a
|
90
|
+
channel-level exception.
|
91
|
+
</span>
|
92
|
+
|
93
|
+
|
94
|
+
h2. Bindings, Routing and Returned Messages
|
95
|
+
|
96
|
+
h3. How AMQP 0.9.1 Brokers Route Messages
|
97
|
+
|
98
|
+
After AMQP message reaches AMQP broker and before it reaches a consumer, several things happen:
|
99
|
+
|
100
|
+
* AMQP broker needs to find one or more queues the message needs to be routed to, depending on exchange
|
101
|
+
* AMQP broker puts a copy of the message into each of those queues or decides to return the messages to the publisher
|
102
|
+
* AMQP broker pushes messages to consumers on those queues or waits for applications to fetch them on demand
|
103
|
+
|
104
|
+
A more in-depth description is this:
|
105
|
+
|
106
|
+
* AMQP broker needs to consult bindings list for the exchange the message was published to find one or more queues the message needs to be routed to (step 1)
|
107
|
+
* If there are no suitable queues found during step 1 and the message was published as mandatory, it is returned to the publisher (step 1b)
|
108
|
+
* If there are suitable queues, a _copy_ of the message is placed into each one (step 2)
|
109
|
+
* If the message was published as mandatory, but there are no active consumers for it, it is returned to the publisher (step 2b)
|
110
|
+
* If there are active consumers on those queues and basic.qos setting permits, message is pushed to those consumers (step 3)
|
111
|
+
* If there are no active consumers and the message is *not* published as mandatory, it will be left in the queue
|
112
|
+
|
113
|
+
The takeaway is that messages may or may not be routed and it is important for applications to handle unroutable messages.
|
114
|
+
|
115
|
+
|
116
|
+
h3. Handling of Unroutable Messages
|
117
|
+
|
118
|
+
Unroutable messages are either dropped or returned back to producers. Vendor-specific extensions can provide additional ways of handing of unroutable
|
119
|
+
messages: for example, RabbitMQ's "Alternate Exchanges extension":http://www.rabbitmq.com/extensions.html#alternate-exchange makes it possible to route unroutable messages to another exchange.
|
120
|
+
amqp gem support for it is documented in the {file:docs/VendorSpecificExtensions.textile Vendor-specific Extensions guide}.
|
121
|
+
|
122
|
+
RabbitMQ 2.6 will introduce a new feature callled dead letter queue where unroutable messages will be put instead of dropping them.
|
123
|
+
|
124
|
+
amqp gem provides a way to handle returned messages with the {AMQP::Exchange#on_return} method:
|
125
|
+
|
126
|
+
<pre>
|
127
|
+
<code>
|
128
|
+
exchange.on_return do |basic_return, metadata, payload|
|
129
|
+
puts "#{payload} was returned! reply_code = #{basic_return.reply_code}, reply_text = #{basic_return.reply_text}"
|
130
|
+
end
|
131
|
+
</code>
|
132
|
+
</pre>
|
133
|
+
|
134
|
+
{file:docs/Exchanges.textile Working With Exchanges} documentation guide provides more information on the subject, including full code examples.
|
135
|
+
|
35
136
|
|
36
137
|
|
37
|
-
h2.
|
138
|
+
h2. Authors
|
38
139
|
|
39
|
-
|
140
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
40
141
|
|
41
142
|
|
42
143
|
|
@@ -8,6 +8,8 @@ h2. About this guide
|
|
8
8
|
This guide covers connection to an AMQP broker from standalone and Web applications,
|
9
9
|
connection error handling, authentication failure handling and related issues.
|
10
10
|
|
11
|
+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
12
|
+
|
11
13
|
|
12
14
|
h2. Which versions of the amqp gem does this guide cover?
|
13
15
|
|
@@ -502,6 +504,12 @@ h2. What to read next
|
|
502
504
|
* {file:docs/ConnectionEncryptionWithTLS.textile Using TLS (SSL)} (if you want to use an SSL encrypted connection to the broker)
|
503
505
|
|
504
506
|
|
507
|
+
h2. Authors
|
508
|
+
|
509
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
510
|
+
|
511
|
+
|
512
|
+
|
505
513
|
h2. Tell us what you think!
|
506
514
|
|
507
515
|
Please take a moment to tell us what you think about this guide "on Twitter":http://twitter.com/rubyamqp or the "Ruby AMQP mailing list":http://groups.google.com/group/ruby-amqp.
|
@@ -79,6 +79,11 @@ h2. Example code
|
|
79
79
|
TLS example (as well as sample certificates you can use to get started with) can be found in the "amqp gem git repository":https://github.com/ruby-amqp/amqp/tree/master/examples
|
80
80
|
|
81
81
|
|
82
|
+
h2. Authors
|
83
|
+
|
84
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
85
|
+
|
86
|
+
|
82
87
|
|
83
88
|
h2. Tell us what you think!
|
84
89
|
|
@@ -4,7 +4,7 @@ h1. Ruby AMQP gem documentation guides
|
|
4
4
|
|
5
5
|
h2. Which versions of the amqp gem do the guides cover?
|
6
6
|
|
7
|
-
These guides cover v0.8.0.
|
7
|
+
These guides cover v0.8.0.RC14 and later of the "Ruby amqp gem":http://github.com/ruby-amqp/amqp.
|
8
8
|
|
9
9
|
|
10
10
|
h2. Documentation structure and how to read these guides
|
@@ -29,9 +29,9 @@ Here is a summary of guides and their content:
|
|
29
29
|
|
30
30
|
<dt>{file:docs/AMQP091ModelExplained.textile AMQP 0.9.1 Model Explained}</dt>
|
31
31
|
<dd>
|
32
|
-
|
32
|
+
A simple, 2 page long introduction to the AMQP 0.9.1 model, focusing on what purpose individual features have. Reading
|
33
33
|
other documentation guides will be easier when you are armed with this knowledge: a lot of the AMQP & RabbitMQ power
|
34
|
-
comes from the AMQP
|
34
|
+
comes from the AMQP Model.
|
35
35
|
</dd>
|
36
36
|
|
37
37
|
<dt>{file:docs/ConnectingToTheBroker.textile Connecting to the Broker}</dt>
|
@@ -51,8 +51,14 @@ Here is a summary of guides and their content:
|
|
51
51
|
<dt>{file:docs/Exchanges.textile Working With Exchanges}</dt>
|
52
52
|
<dd>
|
53
53
|
What AMQP exchanges are. Concept of binding. How to declare AMQP exchanges. How different exchange types route messages and common
|
54
|
-
use cases. How to publish messages, especially how to do it reliably. What AMQP transactions are. What Publisher Confirms are.
|
55
|
-
How to delete an exchange.
|
54
|
+
use cases. How to publish messages, especially how to do it reliably. What AMQP transactions are. What Publisher Confirms are. When
|
55
|
+
messages are returned. How to delete an exchange.
|
56
|
+
</dd>
|
57
|
+
|
58
|
+
<dt>{file:docs/Bindings.textile Bindings}</dt>
|
59
|
+
<dd>
|
60
|
+
What AMQP bindings are, in-depth. How to bind queues to exchanges. How to unbind queues from exchanges. What's the life cycle
|
61
|
+
of messages is. How unroutable messages are handled.
|
56
62
|
</dd>
|
57
63
|
|
58
64
|
<dt>{file:docs/PatternsAndUseCases.textile Patterns and Use Cases}</dt>
|
@@ -101,6 +107,16 @@ h2. Full guide list
|
|
101
107
|
* {file:docs/RunningTests.textile Running amqp gem test suite}
|
102
108
|
|
103
109
|
|
110
|
+
h2. License
|
111
|
+
|
112
|
+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
113
|
+
|
114
|
+
h2. Authors
|
115
|
+
|
116
|
+
These guides were written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee
|
117
|
+
|
118
|
+
|
119
|
+
|
104
120
|
h2. Tell us what you think!
|
105
121
|
|
106
122
|
Please take a moment to tell us what you think about this guide "on Twitter":http://twitter.com/rubyamqp or the "Ruby AMQP mailing list":http://groups.google.com/group/ruby-amqp.
|
data/docs/Durability.textile
CHANGED
@@ -8,6 +8,8 @@ h2. About this guide
|
|
8
8
|
This guide covers queue, exchange and message durability, as well as other
|
9
9
|
topics related to durability, for example, durability in cluster environment.
|
10
10
|
|
11
|
+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
12
|
+
|
11
13
|
|
12
14
|
h2. Covered versions
|
13
15
|
|
@@ -43,7 +45,7 @@ AMQP broker persist them to disk. If the server is restarted, the system ensures
|
|
43
45
|
are not lost. Simply publishing message to a durable exchange or the fact that queue(s) they are routed to
|
44
46
|
is durable doesn't make messages persistent: it all depends on persistence mode of the messages itself.
|
45
47
|
Publishing messages as persistent affects performance (just like with data stores, durability comes at a certain cost
|
46
|
-
in performance and vise versa). Pass :persistent => true to {Exchange#publish} to publish your message as persistent.
|
48
|
+
in performance and vise versa). Pass :persistent => true to {AMQP::Exchange#publish} to publish your message as persistent.
|
47
49
|
|
48
50
|
|
49
51
|
h3. Transactions
|
data/docs/ErrorHandling.textile
CHANGED
@@ -21,6 +21,7 @@ as well as
|
|
21
21
|
* How to recover after a network failure
|
22
22
|
* What is automatic recovery mode, when you should and should not use it
|
23
23
|
|
24
|
+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
24
25
|
|
25
26
|
|
26
27
|
h2. Covered versions
|
@@ -271,6 +272,11 @@ Detecting network connections is nearly useless if AMQP-based application cannot
|
|
271
272
|
in "error handling and recovery". Fortunately, recovery process for many applications follows one simple scheme that amqp
|
272
273
|
gem can perform automatically for you.
|
273
274
|
|
275
|
+
<span class="note">
|
276
|
+
Recovery process, both manual and automatic, always begins with re-opening AMQP connection and then all the channels on that connection.
|
277
|
+
</span>
|
278
|
+
|
279
|
+
|
274
280
|
h3. Manual recovery
|
275
281
|
|
276
282
|
Similarly to the Shutdown Protocol, amqp gem entities implement Recovery Protocol. Recovery Protocol consists of 3 methods
|
@@ -286,6 +292,15 @@ re-established but before AMQP connection is reopened*. {AMQP::Session#after_rec
|
|
286
292
|
|
287
293
|
{AMQP::Channel}, {AMQP::Queue}, {AMQP::Consumer} and {AMQP::Exchange} methods behavior is identical.
|
288
294
|
|
295
|
+
Recovery process for AMQP applications usually involves the following steps:
|
296
|
+
|
297
|
+
# Re-open AMQP connection.
|
298
|
+
# Once connection is open again, re-open all AMQP channels on that connection.
|
299
|
+
# For each channel, re-declare all exchanges
|
300
|
+
# For each channel, re-declare all queues
|
301
|
+
# Once queue is declared, for each queue, re-register all bindings
|
302
|
+
# Once queue is declared, for each queue, re-register all consumers
|
303
|
+
|
289
304
|
|
290
305
|
h3. Automatic recovery
|
291
306
|
|
@@ -591,6 +606,11 @@ but they turn out to be similar with respect to network failures and connection-
|
|
591
606
|
TBD
|
592
607
|
|
593
608
|
|
609
|
+
h2. Authors
|
610
|
+
|
611
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
612
|
+
|
613
|
+
|
594
614
|
|
595
615
|
h2. Tell us what you think!
|
596
616
|
|
data/docs/Exchanges.textile
CHANGED
@@ -6,7 +6,7 @@ h1. Working with exchanges
|
|
6
6
|
h2. About this guide
|
7
7
|
|
8
8
|
This guide covers the use of exchanges according to the AMQP v0.9.1 specification including message publishing,
|
9
|
-
common usage scenarios and how to accomplish typical operations using the Ruby amqp gem.
|
9
|
+
common usage scenarios and how to accomplish typical operations using the Ruby amqp gem. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
10
10
|
|
11
11
|
|
12
12
|
h2. Which versions of the amqp gem does this guide cover?
|
@@ -1051,6 +1051,12 @@ topics. Guides related to this one are
|
|
1051
1051
|
* {file:docs/ErrorHandling.textile Error handling and recovery}
|
1052
1052
|
|
1053
1053
|
|
1054
|
+
h2. Authors
|
1055
|
+
|
1056
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
1057
|
+
|
1058
|
+
|
1059
|
+
|
1054
1060
|
h2. Tell us what you think!
|
1055
1061
|
|
1056
1062
|
Please take a moment to tell us what you think about this guide "on Twitter":http://twitter.com/rubyamqp or the "Ruby AMQP mailing list":http://groups.google.com/group/ruby-amqp.
|
data/docs/GettingStarted.textile
CHANGED
@@ -15,6 +15,8 @@ It should take about 20 minutes to read and study the provided code examples. Th
|
|
15
15
|
* Creating a topic routing example with 2 publishers and 8 subscribers showcasing n:m communication when subscribers only receive messages that they are interested in.
|
16
16
|
* Learning how the amqp gem can be integrated with Ruby objects in a way that makes unit testing easy.
|
17
17
|
|
18
|
+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
19
|
+
|
18
20
|
|
19
21
|
h2. Which versions of the amqp gem does this guide cover?
|
20
22
|
|
@@ -588,6 +590,8 @@ topics from {file:docs/Exchanges.textile use cases for various exchange types} t
|
|
588
590
|
|
589
591
|
We recommend that you read the following guides next, if possible, in this order:
|
590
592
|
|
593
|
+
* {file:docs/AMQP091ModelExplained.textile AMQP 0.9.1 Model Explained}. A simple 2 page long introduction to the AMQP Model concepts and features. Understanding the AMQP Model
|
594
|
+
will make a lot of other documentation, both for the Ruby amqp gem and RabbitMQ itself, easier to follow. With this guide, you don't have to waste hours of time reading the whole specification.
|
591
595
|
* {file:docs/ConnectingToTheBroker.textile Connection to the broker}. This guide explains how to connect to an AMQP broker and how to integrate the amqp gem into standalone and Web applications.
|
592
596
|
* {file:docs/Queues.textile Working With Queues}. This guide focuses on features that consumer applications use heavily.
|
593
597
|
* {file:docs/Exchanges.textile Working With Exchanges}. This guide focuses on features that producer applications use heavily.
|
@@ -598,6 +602,12 @@ If you are migrating your application from earlier versions of the amqp gem (0.6
|
|
598
602
|
{file:docs/08Migration.textile amqp gem 0.8 migration guide}.
|
599
603
|
|
600
604
|
|
605
|
+
h2. Authors
|
606
|
+
|
607
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
608
|
+
|
609
|
+
|
610
|
+
|
601
611
|
h2. Tell us what you think!
|
602
612
|
|
603
613
|
Please take a moment to tell us what you think about this guide "on Twitter":http://twitter.com/rubyamqp or the "Ruby AMQP mailing list":http://groups.google.com/group/ruby-amqp.
|
@@ -9,6 +9,8 @@ h2. About this guide
|
|
9
9
|
This guide explains typical messaging patterns and use cases. It only covers the most common scenarios. For comprehensive list
|
10
10
|
of messaging patterns, consult books on this subject, for example, "Enterprise Integration Patterns":http://www.eaipatterns.com.
|
11
11
|
|
12
|
+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
13
|
+
|
12
14
|
|
13
15
|
h2. Covered versions
|
14
16
|
|
@@ -410,6 +412,10 @@ h3. Code example
|
|
410
412
|
TBD
|
411
413
|
|
412
414
|
|
415
|
+
h2. Authors
|
416
|
+
|
417
|
+
These guides were written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee
|
418
|
+
|
413
419
|
|
414
420
|
h2. Tell us what you think!
|
415
421
|
|
data/docs/Queues.textile
CHANGED
@@ -6,7 +6,7 @@ h1. Working with queues
|
|
6
6
|
h2. About this guide
|
7
7
|
|
8
8
|
This guide covers everything related to queues in the AMQP v0.9.1 specification, common usage scenarios and how to accomplish typical operations using the
|
9
|
-
amqp gem.
|
9
|
+
amqp gem. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
10
10
|
|
11
11
|
|
12
12
|
h2. Which versions of the amqp gem does this guide cover?
|
@@ -1161,6 +1161,12 @@ RabbitMQ implements a number of extensions to AMQP v0.9.1 functionality that are
|
|
1161
1161
|
per-queue messages time-to-live (TTL), is related to this guide and can be used with the amqp gem v0.8.0 and later.
|
1162
1162
|
|
1163
1163
|
|
1164
|
+
h2. Authors
|
1165
|
+
|
1166
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
1167
|
+
|
1168
|
+
|
1169
|
+
|
1164
1170
|
h2. Tell us what you think!
|
1165
1171
|
|
1166
1172
|
Please take a moment to tell us what you think about this guide "on Twitter":http://twitter.com/rubyamqp or the "Ruby AMQP mailing list":http://groups.google.com/group/ruby-amqp.
|
@@ -46,7 +46,12 @@ support, RabbitMQ 1.7.0 requires
|
|
46
46
|
* Erlang/OTP R13B or later
|
47
47
|
* Erlang SSL 3.10 or later
|
48
48
|
|
49
|
-
and recommends using Erlang R141B that ships with Erlang SSL 4.0.1.
|
49
|
+
and recommends using Erlang R141B that ships with Erlang SSL 4.0.1. Learn more in our {file:docs/ConnectionEncryptionWithTLS.textile Using TLS (SSL)} guide.
|
50
|
+
|
51
|
+
|
52
|
+
h2. Authors
|
53
|
+
|
54
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
50
55
|
|
51
56
|
|
52
57
|
|
data/docs/RunningTests.textile
CHANGED
@@ -8,6 +8,8 @@ h2. About this guide
|
|
8
8
|
This guide is for people who want to contribute to amqp gem development. It has no relevant information for those
|
9
9
|
who want to build applications using the library.
|
10
10
|
|
11
|
+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a> (including images & stylesheets). The source is available "on Github":https://github.com/ruby-amqp/amqp/tree/master/docs.
|
12
|
+
|
11
13
|
|
12
14
|
h2. Covered versions
|
13
15
|
|
@@ -42,7 +44,7 @@ h2. Dependencies
|
|
42
44
|
Dependencies are managed by Bundler. So begin with
|
43
45
|
|
44
46
|
<pre><code>
|
45
|
-
gem install bundler
|
47
|
+
gem install bundler
|
46
48
|
</code></pre>
|
47
49
|
|
48
50
|
and then, from the root of the repository run
|
@@ -82,9 +84,12 @@ For that, we use Rake:
|
|
82
84
|
rake spec:ci
|
83
85
|
</code></pre>
|
84
86
|
|
85
|
-
Thanks to the excellent "Travis CI":http://travis-ci.org project, we run test suites across
|
86
|
-
|
87
|
+
Thanks to the excellent "Travis CI":http://travis-ci.org project, we run test suites across multiple Ruby implementations/versions and 2 EventMachine versions.
|
88
|
+
|
89
|
+
|
90
|
+
h2. Authors
|
87
91
|
|
92
|
+
This guide was written by "Michael Klishin":http://twitter.com/michaelklishin and edited by "Chris Duncan":https://twitter.com/celldee.
|
88
93
|
|
89
94
|
|
90
95
|
|