amqp 0.8.0.rc13 → 0.8.0.rc14
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +2 -1
- data/.travis.yml +8 -2
- data/.yardopts +1 -0
- data/CHANGELOG +9 -0
- data/Gemfile +17 -11
- data/README.md +26 -16
- data/amqp.gemspec +2 -2
- data/bin/ci/before_build.sh +21 -0
- data/docs/08Migration.textile +199 -5
- data/docs/AMQP091ModelExplained.textile +322 -0
- data/docs/Bindings.textile +24 -4
- data/docs/Clustering.textile +1 -1
- data/docs/ConnectingToTheBroker.textile +98 -82
- data/docs/ConnectionEncryptionWithTLS.textile +65 -5
- data/docs/DocumentationGuidesIndex.textile +93 -13
- data/docs/Durability.textile +1 -1
- data/docs/ErrorHandling.textile +458 -94
- data/docs/Exchanges.textile +901 -87
- data/docs/GettingStarted.textile +278 -143
- data/docs/PatternsAndUseCases.textile +420 -0
- data/docs/Queues.textile +730 -178
- data/docs/RabbitMQVersions.textile +18 -3
- data/docs/RunningTests.textile +1 -1
- data/docs/TestingWithEventedSpec.textile +121 -0
- data/docs/Troubleshooting.textile +15 -1
- data/docs/VendorSpecificExtensions.textile +1 -1
- data/docs/diagrams/001_hello_world_example_routing.png +0 -0
- data/docs/diagrams/002_blabbr_example_routing.png +0 -0
- data/docs/diagrams/003_weathr_example_routing.png +0 -0
- data/docs/diagrams/004_fanout_exchange.png +0 -0
- data/docs/diagrams/005_direct_exchange.png +0 -0
- data/docs/diagrams/redhat/direct_exchange.png +0 -0
- data/docs/diagrams/redhat/fanout_exchange.png +0 -0
- data/docs/diagrams/redhat/topic_exchange.png +0 -0
- data/examples/error_handling/automatic_recovery_of_channel_and_queues.rb +50 -0
- data/examples/error_handling/automatically_recovering_hello_world_consumer.rb +51 -0
- data/examples/error_handling/automatically_recovering_hello_world_consumer_that_uses_a_server_named_queue.rb +51 -0
- data/examples/error_handling/basic_connection_failover.rb +22 -0
- data/examples/error_handling/channel_level_exception.rb +9 -2
- data/examples/error_handling/connection_level_exception.rb +8 -1
- data/examples/error_handling/connection_level_exception_with_objects.rb +49 -0
- data/examples/error_handling/connection_loss_handler.rb +1 -5
- data/examples/error_handling/hello_world_producer.rb +43 -0
- data/examples/error_handling/insufficient_permissions.rb +54 -0
- data/examples/error_handling/manual_connection_and_channel_recovery.rb +71 -0
- data/examples/error_handling/queue_exclusivity_violation.rb +41 -0
- data/examples/error_handling/queue_name_violation.rb +31 -0
- data/examples/exchanges/autodeletion_of_exchanges.rb +1 -4
- data/examples/guides/queues/01a_declaring_a_server_named_queue_using_queue_constructor.rb +7 -8
- data/examples/guides/queues/01b_declaring_a_queue_using_queue_constructor.rb +7 -8
- data/examples/guides/queues/02a_declaring_a_durable_shared_queue.rb +5 -8
- data/examples/guides/queues/02b_declaring_a_durable_shared_queue.rb +5 -8
- data/examples/guides/queues/03a_declaring_a_temporary_exclusive_queue.rb +7 -8
- data/examples/guides/queues/04_bind_a_queue_using_exchange_instance.rb +9 -10
- data/examples/guides/queues/05_bind_a_queue_using_exchange_name.rb +8 -10
- data/examples/guides/queues/06_subscribe_to_receive_messages.rb +10 -12
- data/examples/guides/queues/07_fetch_a_message_from_the_queue.rb +14 -14
- data/examples/guides/queues/08_unsubscribing_a_consumer.rb +13 -16
- data/examples/guides/queues/09_unbinding_from_exchange.rb +16 -22
- data/examples/guides/queues/10_purge_a_queue.rb +13 -18
- data/examples/guides/queues/11_deleting_a_queue.rb +14 -19
- data/examples/guides/queues/12_objects_that_consume_messages.rb +69 -0
- data/examples/guides/queues/13_objects_that_consume_messages_take_two.rb +89 -0
- data/examples/hello_world.rb +1 -3
- data/examples/hello_world_with_an_empty_string.rb +5 -6
- data/examples/inspecting_server_information.rb +45 -0
- data/examples/issues/issue_93.rb +23 -0
- data/examples/issues/issue_94.rb +23 -0
- data/examples/patterns/command/consumer.rb +45 -0
- data/examples/patterns/command/producer.rb +26 -0
- data/examples/patterns/request_reply/client.rb +29 -0
- data/examples/patterns/request_reply/server.rb +26 -0
- data/examples/publishing/publishing_a_one_off_message.rb +6 -4
- data/examples/publishing/returned_messages.rb +2 -10
- data/examples/queues/accessing_message_metadata.rb +15 -13
- data/examples/queues/queue_status.rb +12 -15
- data/examples/routing/fanout_routing.rb +33 -0
- data/examples/routing/headers_routing.rb +17 -15
- data/examples/routing/round_robin_with_direct_exchange.rb +39 -0
- data/examples/routing/round_robin_with_the_default_exchange.rb +38 -0
- data/examples/routing/unroutable_mandatory_message_is_returned.rb +33 -0
- data/examples/routing/weather_updates.rb +15 -20
- data/examples/tls/using_tls.rb +41 -0
- data/lib/amqp/bit_set.rb +80 -0
- data/lib/amqp/broker.rb +72 -0
- data/lib/amqp/channel.rb +93 -13
- data/lib/amqp/client.rb +11 -22
- data/lib/amqp/compatibility/ruby187_patchlevel_check.rb +2 -0
- data/lib/amqp/connection.rb +2 -3
- data/lib/amqp/consumer.rb +208 -0
- data/lib/amqp/deprecated/fork.rb +2 -0
- data/lib/amqp/deprecated/mq.rb +2 -0
- data/lib/amqp/exchange.rb +6 -4
- data/lib/amqp/extensions/rabbitmq.rb +3 -1
- data/lib/amqp/header.rb +76 -14
- data/lib/amqp/int_allocator.rb +96 -0
- data/lib/amqp/logger.rb +2 -0
- data/lib/amqp/queue.rb +242 -86
- data/lib/amqp/rpc.rb +2 -0
- data/lib/amqp/session.rb +169 -9
- data/lib/amqp/utilities/event_loop_helper.rb +2 -0
- data/lib/amqp/utilities/server_type.rb +2 -0
- data/lib/amqp/version.rb +2 -2
- data/lib/mq.rb +4 -2
- data/lib/mq/logger.rb +3 -1
- data/lib/mq/rpc.rb +3 -1
- data/spec/integration/authentication_spec.rb +17 -10
- data/spec/integration/automatic_binding_for_default_direct_exchange_spec.rb +1 -1
- data/spec/integration/automatic_recovery_predicate_spec.rb +68 -0
- data/spec/integration/basic_get_spec.rb +2 -1
- data/spec/integration/{extensions/basic_return_spec.rb → basic_return_spec.rb} +2 -1
- data/spec/integration/channel_level_exception_handling_spec.rb +53 -0
- data/spec/integration/connection_level_exception_handling_spec.rb +49 -0
- data/spec/integration/declare_and_immediately_bind_a_server_named_queue_spec.rb +38 -17
- data/spec/integration/declare_one_hundred_server_named_queues_spec.rb +44 -0
- data/spec/integration/direct_exchange_routing_spec.rb +125 -0
- data/spec/integration/exchange_declaration_spec.rb +75 -46
- data/spec/integration/extensions/rabbitmq/publisher_confirmations_spec.rb +180 -0
- data/spec/integration/{workload_distribution_spec.rb → fanout_exchange_routing_spec.rb} +10 -9
- data/spec/integration/headers_exchange_routing_spec.rb +269 -0
- data/spec/integration/hello_world_spec.rb +77 -0
- data/spec/integration/immediate_messages_spec.rb +59 -0
- data/spec/integration/mandatory_messages_spec.rb +52 -0
- data/spec/integration/message_metadata_access_spec.rb +106 -0
- data/spec/integration/multiple_consumers_per_queue_spec.rb +319 -0
- data/spec/integration/ordering_of_published_messages_spec.rb +96 -0
- data/spec/integration/queue_declaration_spec.rb +8 -8
- data/spec/integration/queue_status_spec.rb +66 -0
- data/spec/integration/recovery/per_channel_automatic_recovery_on_graceful_broker_shutdown_spec.rb +76 -0
- data/spec/integration/recovery/per_channel_automatic_recovery_spec.rb +72 -0
- data/spec/integration/redelivery_of_unacknowledged_messages_spec.rb +96 -0
- data/spec/integration/regressions/concurrent_publishing_on_the_same_channel_spec.rb +91 -0
- data/spec/integration/regressions/empty_message_body_spec.rb +56 -0
- data/spec/integration/regressions/issue66_spec.rb +2 -1
- data/spec/integration/reply_queue_communication_spec.rb +2 -1
- data/spec/integration/store_and_forward_spec.rb +4 -3
- data/spec/integration/topic_subscription_spec.rb +2 -1
- data/spec/integration/tx_commit_spec.rb +124 -0
- data/spec/integration/tx_rollback_spec.rb +167 -0
- data/spec/spec_helper.rb +44 -71
- data/spec/unit/amqp/bit_set_spec.rb +127 -0
- data/spec/unit/amqp/channel_id_allocation_spec.rb +40 -0
- data/spec/unit/amqp/connection_spec.rb +4 -2
- data/spec/unit/amqp/int_allocator_spec.rb +116 -0
- metadata +92 -26
- data/CONTRIBUTORS +0 -29
- data/docs/Routing.textile +0 -30
- data/examples/real-world/task-queue/README.textile +0 -3
- data/examples/real-world/task-queue/consumer.rb +0 -27
- data/examples/real-world/task-queue/producer.rb +0 -22
- data/spec/unit/amqp/basic_spec.rb +0 -39
- data/tasks.rb +0 -4
data/CONTRIBUTORS
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
557 Michael S. Klishin
|
2
|
-
232 Aman Gupta
|
3
|
-
98 Jakub Šťastný aka Botanicus
|
4
|
-
43 Jakub Stastny aka botanicus
|
5
|
-
26 arvicco
|
6
|
-
24 Mark Abramov
|
7
|
-
7 Chuck Remes
|
8
|
-
4 Marek Majkowski
|
9
|
-
4 David Wragg
|
10
|
-
3 Chris Van Pelt
|
11
|
-
3 Jake Douglas
|
12
|
-
2 Yuri Leikind
|
13
|
-
2 coderrr
|
14
|
-
2 Doug Barth
|
15
|
-
1 binary42
|
16
|
-
1 dan
|
17
|
-
1 Brendan Ribera
|
18
|
-
1 Cliff Moon
|
19
|
-
1 Coda Hale
|
20
|
-
1 Dane Jensen
|
21
|
-
1 Daniel Neighman
|
22
|
-
1 John Richmond
|
23
|
-
1 Jonathan Bryant
|
24
|
-
1 Jordan Ritter
|
25
|
-
1 Kasper Bjørn Nielsen
|
26
|
-
1 Michael
|
27
|
-
1 Phil Smith
|
28
|
-
1 Simon Horne
|
29
|
-
1 Tony Garnock-Jones
|
data/docs/Routing.textile
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# @title Ruby AMQP gem: Routing
|
2
|
-
|
3
|
-
|
4
|
-
h1. TBD
|
5
|
-
|
6
|
-
|
7
|
-
h2. About this guide
|
8
|
-
|
9
|
-
TBD
|
10
|
-
|
11
|
-
|
12
|
-
h2. Covered versions
|
13
|
-
|
14
|
-
This guide covers "Ruby amqp gem":http://github.com/ruby-amqp/amqp v0.8.0 and later.
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
h2. TBD
|
19
|
-
|
20
|
-
TBD
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
h2. Tell us what you think!
|
25
|
-
|
26
|
-
Please take a moment and tell us what you think about this guide on "Ruby AMQP mailing list":http://groups.google.com/group/ruby-amqp:
|
27
|
-
what was unclear? what wasn't covered? maybe you don't like guide style or grammar and spelling are incorrect? Readers feedback is
|
28
|
-
key to making documentation better.
|
29
|
-
|
30
|
-
If mailing list communication is not an option for you for some reason, you can "contact guides author directly":mailto:michael@novemberain.com?subject=amqp%20gem%20documentation
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# encoding: utf - 8
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.expand_path("../../../../lib", __FILE__)
|
4
|
-
|
5
|
-
require "amqp"
|
6
|
-
|
7
|
-
# Imagine we have for example 10 servers, on each of them runs this
|
8
|
-
# script, just the server_name variable will be different on each of them.
|
9
|
-
server_name = "server - 1"
|
10
|
-
|
11
|
-
AMQP.start do
|
12
|
-
amq = AMQP::Channel.new
|
13
|
-
|
14
|
-
# Tasks distribution has to be based on load on each clients rather
|
15
|
-
# than on the number of distributed messages. (The default behaviour
|
16
|
-
# is to dispatches every n - th message to the n - th consumer.
|
17
|
-
amq.prefetch(1)
|
18
|
-
|
19
|
-
# Acknowledgements are good for letting the server know
|
20
|
-
# that the task is finished. If the consumer doesn't send
|
21
|
-
# the acknowledgement, then the task is considered to be unfinished.
|
22
|
-
amq.queue(server_name).subscribe(:ack => true) do |h, message|
|
23
|
-
puts message
|
24
|
-
puts system(message)
|
25
|
-
h.ack
|
26
|
-
end
|
27
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# encoding: utf - 8
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.expand_path("../../../../lib", __FILE__)
|
4
|
-
|
5
|
-
require "amqp"
|
6
|
-
|
7
|
-
# Imagine the command is something
|
8
|
-
# CPU - intensive like image processing.
|
9
|
-
command = "sleep 0.1"
|
10
|
-
|
11
|
-
AMQP.start(port: 1112) do
|
12
|
-
amq = AMQP::Channel.new
|
13
|
-
exchange = amq.direct("tasks")
|
14
|
-
queue = amq.queue("tasks")
|
15
|
-
|
16
|
-
# And this is user - input simulation,
|
17
|
-
# which can be a user uploading an image.
|
18
|
-
EM.add_periodic_timer(1) do
|
19
|
-
puts "~ publishing # {command}"
|
20
|
-
exchange.publish(command, :routing_key => "tasks")
|
21
|
-
end
|
22
|
-
end
|
@@ -1,39 +0,0 @@
|
|
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
|
-
amqp_before do
|
16
|
-
@channel = AMQP::Channel.new
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
#
|
21
|
-
# Examples
|
22
|
-
#
|
23
|
-
|
24
|
-
|
25
|
-
describe ".channel" do
|
26
|
-
it 'gives each thread a separate channel' do
|
27
|
-
pending 'This is not implemented in current lib'
|
28
|
-
module AMQP
|
29
|
-
@@cur_channel = 0
|
30
|
-
end
|
31
|
-
|
32
|
-
described_class.channel.should == 1
|
33
|
-
|
34
|
-
Thread.new { described_class.channel }.value.should == 2
|
35
|
-
Thread.new { described_class.channel }.value.should == 3
|
36
|
-
done
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end # describe AMQP
|
data/tasks.rb
DELETED