bunny 2.17.0 → 2.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -11
  3. data/lib/bunny/channel.rb +1 -1
  4. data/lib/bunny/session.rb +22 -4
  5. data/lib/bunny/transport.rb +7 -6
  6. data/lib/bunny/version.rb +1 -1
  7. data/spec/higher_level_api/integration/basic_consume_spec.rb +14 -6
  8. data/spec/higher_level_api/integration/tls_connection_spec.rb +25 -32
  9. data/spec/issues/issue609_spec.rb +84 -0
  10. data/spec/lower_level_api/integration/basic_cancel_spec.rb +1 -1
  11. data/spec/lower_level_api/integration/basic_consume_spec.rb +8 -8
  12. metadata +28 -87
  13. data/.github/ISSUE_TEMPLATE.md +0 -18
  14. data/.gitignore +0 -28
  15. data/.rspec +0 -1
  16. data/.travis.yml +0 -33
  17. data/.yardopts +0 -8
  18. data/CONTRIBUTING.md +0 -132
  19. data/ChangeLog.md +0 -2129
  20. data/Gemfile +0 -55
  21. data/LICENSE +0 -21
  22. data/Rakefile +0 -54
  23. data/benchmarks/basic_publish/with_128K_messages.rb +0 -35
  24. data/benchmarks/basic_publish/with_1k_messages.rb +0 -35
  25. data/benchmarks/basic_publish/with_4K_messages.rb +0 -35
  26. data/benchmarks/basic_publish/with_64K_messages.rb +0 -35
  27. data/benchmarks/channel_open.rb +0 -28
  28. data/benchmarks/mutex_and_monitor.rb +0 -42
  29. data/benchmarks/queue_declare.rb +0 -29
  30. data/benchmarks/queue_declare_and_bind.rb +0 -29
  31. data/benchmarks/queue_declare_bind_and_delete.rb +0 -29
  32. data/benchmarks/synchronized_sorted_set.rb +0 -53
  33. data/benchmarks/write_vs_write_nonblock.rb +0 -49
  34. data/bunny.gemspec +0 -34
  35. data/docker/Dockerfile +0 -24
  36. data/docker/apt/preferences.d/erlang +0 -3
  37. data/docker/apt/sources.list.d/bintray.rabbitmq.list +0 -2
  38. data/docker/docker-entrypoint.sh +0 -26
  39. data/docker/rabbitmq.conf +0 -29
  40. data/docker-compose.yml +0 -28
  41. data/examples/connection/authentication_failure.rb +0 -16
  42. data/examples/connection/automatic_recovery_with_basic_get.rb +0 -40
  43. data/examples/connection/automatic_recovery_with_client_named_queues.rb +0 -36
  44. data/examples/connection/automatic_recovery_with_multiple_consumers.rb +0 -46
  45. data/examples/connection/automatic_recovery_with_republishing.rb +0 -109
  46. data/examples/connection/automatic_recovery_with_server_named_queues.rb +0 -35
  47. data/examples/connection/channel_level_exception.rb +0 -27
  48. data/examples/connection/disabled_automatic_recovery.rb +0 -34
  49. data/examples/connection/heartbeat.rb +0 -17
  50. data/examples/connection/manually_reconnecting_consumer.rb +0 -23
  51. data/examples/connection/manually_reconnecting_publisher.rb +0 -28
  52. data/examples/connection/unknown_host.rb +0 -16
  53. data/examples/consumers/high_and_low_priority.rb +0 -50
  54. data/examples/guides/exchanges/direct_exchange_routing.rb +0 -36
  55. data/examples/guides/exchanges/fanout_exchange_routing.rb +0 -28
  56. data/examples/guides/exchanges/headers_exchange_routing.rb +0 -31
  57. data/examples/guides/exchanges/mandatory_messages.rb +0 -30
  58. data/examples/guides/extensions/alternate_exchange.rb +0 -30
  59. data/examples/guides/extensions/basic_nack.rb +0 -33
  60. data/examples/guides/extensions/connection_blocked.rb +0 -35
  61. data/examples/guides/extensions/consumer_cancellation_notification.rb +0 -39
  62. data/examples/guides/extensions/dead_letter_exchange.rb +0 -32
  63. data/examples/guides/extensions/exchange_to_exchange_bindings.rb +0 -29
  64. data/examples/guides/extensions/per_message_ttl.rb +0 -36
  65. data/examples/guides/extensions/per_queue_message_ttl.rb +0 -36
  66. data/examples/guides/extensions/publisher_confirms.rb +0 -28
  67. data/examples/guides/extensions/queue_lease.rb +0 -26
  68. data/examples/guides/extensions/sender_selected_distribution.rb +0 -32
  69. data/examples/guides/getting_started/blabbr.rb +0 -27
  70. data/examples/guides/getting_started/hello_world.rb +0 -22
  71. data/examples/guides/getting_started/weathr.rb +0 -49
  72. data/examples/guides/queues/one_off_consumer.rb +0 -25
  73. data/examples/guides/queues/redeliveries.rb +0 -81
  74. data/profiling/basic_publish/with_4K_messages.rb +0 -33
  75. data/repl +0 -3
  76. data/spec/tls/ca_certificate.pem +0 -29
  77. data/spec/tls/ca_key.pem +0 -52
  78. data/spec/tls/client_certificate.pem +0 -29
  79. data/spec/tls/client_key.pem +0 -51
  80. data/spec/tls/generate-server-cert.sh +0 -8
  81. data/spec/tls/server-openssl.cnf +0 -10
  82. data/spec/tls/server.csr +0 -16
  83. data/spec/tls/server_certificate.pem +0 -29
  84. data/spec/tls/server_key.pem +0 -51
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating basic.nack"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- q = ch.queue("", :exclusive => true)
15
-
16
- 20.times do
17
- q.publish("")
18
- end
19
-
20
- 20.times do
21
- delivery_info, _, _ = q.pop(:manual_ack => true)
22
-
23
- if delivery_info.delivery_tag == 20
24
- # requeue them all at once with basic.nack
25
- ch.nack(delivery_info.delivery_tag, true, true)
26
- end
27
- end
28
-
29
- puts "Queue #{q.name} still has #{q.message_count} messages in it"
30
-
31
- sleep 0.7
32
- puts "Disconnecting..."
33
- conn.close
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating connection.blocked"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- x = ch.fanout("amq.fanout")
15
-
16
- # This example requires high memory watermark to be set
17
- # really low to demonstrate blocking.
18
- #
19
- # rabbitmqctl set_vm_memory_high_watermark 0.00000001
20
- #
21
- # should do it.
22
-
23
- conn.on_blocked do |connection_blocked|
24
- puts "Connection is blocked. Reason: #{connection_blocked.reason}"
25
- end
26
-
27
- conn.on_unblocked do |connection_unblocked|
28
- puts "Connection is unblocked."
29
- end
30
-
31
- x.publish("z" * 1024 * 1024 * 16)
32
-
33
- sleep 120.0
34
- puts "Disconnecting..."
35
- conn.close
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating consumer cancellation notification"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
-
15
- module Bunny
16
- module Examples
17
- class ExampleConsumer < Bunny::Consumer
18
- def cancelled?
19
- @cancelled
20
- end
21
-
22
- def handle_cancellation(basic_cancel)
23
- puts "#{@consumer_tag} was cancelled"
24
- @cancelled = true
25
- end
26
- end
27
- end
28
- end
29
-
30
- q = ch.queue("", :exclusive => true)
31
- c = Bunny::Examples::ExampleConsumer.new(ch, q)
32
- q.subscribe_with(c)
33
-
34
- sleep 0.1
35
- q.delete
36
-
37
- sleep 0.1
38
- puts "Disconnecting..."
39
- conn.close
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating dead letter exchange"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- x = ch.fanout("amq.fanout")
15
- dlx = ch.fanout("bunny.examples.dlx.exchange")
16
- q = ch.queue("", :exclusive => true, :arguments => {"x-dead-letter-exchange" => dlx.name}).bind(x)
17
- # dead letter queue
18
- dlq = ch.queue("", :exclusive => true).bind(dlx)
19
-
20
- x.publish("")
21
- sleep 0.2
22
-
23
- delivery_info, _, _ = q.pop(:manual_ack => true)
24
- puts "#{dlq.message_count} messages dead lettered so far"
25
- puts "Rejecting a message"
26
- ch.nack(delivery_info.delivery_tag)
27
- sleep 0.2
28
- puts "#{dlq.message_count} messages dead lettered so far"
29
-
30
- dlx.delete
31
- puts "Disconnecting..."
32
- conn.close
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating exchange-to-exchange bindings"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- x1 = ch.fanout("bunny.examples.e2e.exchange1", :auto_delete => true, :durable => false)
15
- x2 = ch.fanout("bunny.examples.e2e.exchange2", :auto_delete => true, :durable => false)
16
- # x1 will be the source
17
- x2.bind(x1)
18
-
19
- q = ch.queue("", :exclusive => true)
20
- q.bind(x2)
21
-
22
- x1.publish("")
23
-
24
- sleep 0.2
25
- puts "Queue #{q.name} now has #{q.message_count} message in it"
26
-
27
- sleep 0.7
28
- puts "Disconnecting..."
29
- conn.close
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating per-message TTL"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- x = ch.fanout("amq.fanout")
15
- q = ch.queue("", :exclusive => true).bind(x)
16
-
17
- 10.times do |i|
18
- x.publish("Message #{i}", :expiration => 1000)
19
- end
20
-
21
- sleep 0.7
22
- _, _, content1 = q.pop
23
- puts "Fetched #{content1.inspect} after 0.7 second"
24
-
25
- sleep 0.8
26
- _, _, content2 = q.pop
27
- msg = if content2
28
- content2.inspect
29
- else
30
- "nothing"
31
- end
32
- puts "Fetched #{msg} after 1.5 second"
33
-
34
- sleep 0.7
35
- puts "Closing..."
36
- conn.close
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating per-queue message TTL"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- x = ch.fanout("amq.fanout")
15
- q = ch.queue("", :exclusive => true, :arguments => {"x-message-ttl" => 1000}).bind(x)
16
-
17
- 10.times do |i|
18
- x.publish("Message #{i}")
19
- end
20
-
21
- sleep 0.7
22
- _, _, content1 = q.pop
23
- puts "Fetched #{content1.inspect} after 0.7 second"
24
-
25
- sleep 0.8
26
- _, _, content2 = q.pop
27
- msg = if content2
28
- content2.inspect
29
- else
30
- "nothing"
31
- end
32
- puts "Fetched #{msg} after 1.5 second"
33
-
34
- sleep 0.7
35
- puts "Closing..."
36
- conn.close
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating publisher confirms"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- x = ch.fanout("amq.fanout")
15
- q = ch.queue("", :exclusive => true).bind(x)
16
-
17
- ch.confirm_select
18
- 1000.times do
19
- x.publish("")
20
- end
21
- ch.wait_for_confirms # blocks calling thread until all acks are received
22
-
23
- sleep 0.2
24
- puts "Received acks for all published messages. #{q.name} now has #{q.message_count} messages."
25
-
26
- sleep 0.7
27
- puts "Disconnecting..."
28
- conn.close
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating queue TTL (queue leases)"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- q = ch.queue("", :exclusive => true, :arguments => {"x-expires" => 300})
15
-
16
- sleep 0.4
17
- begin
18
- # this will raise because the queue is already deleted
19
- q.message_count
20
- rescue Bunny::NotFound => nfe
21
- puts "Got a 404 response: the queue has already been removed"
22
- end
23
-
24
- sleep 0.7
25
- puts "Closing..."
26
- conn.close
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- puts "=> Demonstrating sender-selected distribution"
8
- puts
9
-
10
- conn = Bunny.new
11
- conn.start
12
-
13
- ch = conn.create_channel
14
- x = ch.direct("bunny.examples.ssd.exchange")
15
- q1 = ch.queue("", :exclusive => true).bind(x, :routing_key => "one")
16
- q2 = ch.queue("", :exclusive => true).bind(x, :routing_key => "two")
17
- q3 = ch.queue("", :exclusive => true).bind(x, :routing_key => "three")
18
- q4 = ch.queue("", :exclusive => true).bind(x, :routing_key => "four")
19
-
20
- 10.times do |i|
21
- x.publish("Message #{i}", :routing_key => "one", :headers => {"CC" => ["two", "three"]})
22
- end
23
-
24
- sleep 0.2
25
- puts "Queue #{q1.name} now has #{q1.message_count} messages in it"
26
- puts "Queue #{q2.name} now has #{q2.message_count} messages in it"
27
- puts "Queue #{q3.name} now has #{q3.message_count} messages in it"
28
- puts "Queue #{q4.name} now has #{q4.message_count} messages in it"
29
-
30
- sleep 0.7
31
- puts "Closing..."
32
- conn.close
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- conn = Bunny.new
8
- conn.start
9
-
10
- ch = conn.create_channel
11
- x = ch.fanout("nba.scores")
12
-
13
- ch.queue("joe", :auto_delete => true).bind(x).subscribe do |delivery_info, properties, payload|
14
- puts "#{payload} => joe"
15
- end
16
-
17
- ch.queue("aaron", :auto_delete => true).bind(x).subscribe do |delivery_info, properties, payload|
18
- puts "#{payload} => aaron"
19
- end
20
-
21
- ch.queue("bob", :auto_delete => true).bind(x).subscribe do |delivery_info, properties, payload|
22
- puts "#{payload} => bob"
23
- end
24
-
25
- x.publish("BOS 101, NYK 89").publish("ORL 85, ALT 88")
26
-
27
- conn.close
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- STDOUT.sync = true
8
-
9
- conn = Bunny.new
10
- conn.start
11
-
12
- ch = conn.create_channel
13
- q = ch.queue("bunny.examples.hello_world", :auto_delete => true)
14
-
15
- q.subscribe do |delivery_info, properties, payload|
16
- puts "Received #{payload}"
17
- end
18
-
19
- q.publish("Hello!", :routing_key => q.name)
20
-
21
- sleep 1.0
22
- conn.close
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- STDOUT.sync = true
8
-
9
- connection = Bunny.new
10
- connection.start
11
-
12
- channel = connection.create_channel
13
- # topic exchange name can be any string
14
- exchange = channel.topic("weathr", :auto_delete => true)
15
-
16
- # Subscribers.
17
- channel.queue("", :exclusive => true).bind(exchange, :routing_key => "americas.north.#").subscribe do |delivery_info, properties, payload|
18
- puts "An update for North America: #{payload}, routing key is #{delivery_info.routing_key}"
19
- end
20
- channel.queue("americas.south").bind(exchange, :routing_key => "americas.south.#").subscribe do |delivery_info, properties, payload|
21
- puts "An update for South America: #{payload}, routing key is #{delivery_info.routing_key}"
22
- end
23
- channel.queue("us.california").bind(exchange, :routing_key => "americas.north.us.ca.*").subscribe do |delivery_info, properties, payload|
24
- puts "An update for US/California: #{payload}, routing key is #{delivery_info.routing_key}"
25
- end
26
- channel.queue("us.tx.austin").bind(exchange, :routing_key => "#.tx.austin").subscribe do |delivery_info, properties, payload|
27
- puts "An update for Austin, TX: #{payload}, routing key is #{delivery_info.routing_key}"
28
- end
29
- channel.queue("it.rome").bind(exchange, :routing_key => "europe.italy.rome").subscribe do |delivery_info, properties, payload|
30
- puts "An update for Rome, Italy: #{payload}, routing key is #{delivery_info.routing_key}"
31
- end
32
- channel.queue("asia.hk").bind(exchange, :routing_key => "asia.southeast.hk.#").subscribe do |delivery_info, properties, payload|
33
- puts "An update for Hong Kong: #{payload}, routing key is #{delivery_info.routing_key}"
34
- end
35
-
36
- exchange.publish("San Diego update", :routing_key => "americas.north.us.ca.sandiego").
37
- publish("Berkeley update", :routing_key => "americas.north.us.ca.berkeley").
38
- publish("San Francisco update", :routing_key => "americas.north.us.ca.sanfrancisco").
39
- publish("New York update", :routing_key => "americas.north.us.ny.newyork").
40
- publish("São Paolo update", :routing_key => "americas.south.brazil.saopaolo").
41
- publish("Hong Kong update", :routing_key => "asia.southeast.hk.hongkong").
42
- publish("Kyoto update", :routing_key => "asia.southeast.japan.kyoto").
43
- publish("Shanghai update", :routing_key => "asia.southeast.prc.shanghai").
44
- publish("Rome update", :routing_key => "europe.italy.roma").
45
- publish("Paris update", :routing_key => "europe.france.paris")
46
-
47
- sleep 1.0
48
-
49
- connection.close
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- STDOUT.sync = true
8
-
9
- conn = Bunny.new
10
- conn.start
11
-
12
- ch = conn.create_channel
13
- q = ch.queue("bunny.examples.hello_world", :auto_delete => true)
14
-
15
- q.publish("Hello!", :routing_key => q.name)
16
-
17
- # demonstrates a blocking consumer that needs to cancel itself
18
- # in the message handler
19
- q.subscribe(:block => true) do |delivery_info, properties, payload|
20
- puts "Received #{payload}, cancelling"
21
- delivery_info.consumer.cancel
22
- end
23
-
24
- sleep 1.0
25
- conn.close
@@ -1,81 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
-
7
- STDOUT.sync = true
8
-
9
- puts "=> Subscribing for messages using explicit acknowledgements model"
10
- puts
11
-
12
- connection1 = Bunny.new
13
- connection1.start
14
-
15
- connection2 = Bunny.new
16
- connection2.start
17
-
18
- connection3 = Bunny.new
19
- connection3.start
20
-
21
- ch1 = connection1.create_channel
22
- ch1.prefetch(1)
23
-
24
- ch2 = connection2.create_channel
25
- ch2.prefetch(1)
26
-
27
- ch3 = connection3.create_channel
28
- ch3.prefetch(1)
29
-
30
- x = ch3.direct("amq.direct")
31
- q1 = ch1.queue("bunny.examples.acknowledgements.explicit", :auto_delete => false)
32
- q1.purge
33
-
34
- q1.bind(x).subscribe(:manual_ack => true, :block => false) do |delivery_info, properties, payload|
35
- # do some work
36
- sleep(0.2)
37
-
38
- # acknowledge some messages, they will be removed from the queue
39
- if rand > 0.5
40
- # FYI: there is a shortcut, Bunny::Channel.ack
41
- ch1.acknowledge(delivery_info.delivery_tag, false)
42
- puts "[consumer1] Got message ##{properties.headers['i']}, redelivered?: #{delivery_info.redelivered?}, ack-ed"
43
- else
44
- # some messages are not ack-ed and will remain in the queue for redelivery
45
- # when app #1 connection is closed (either properly or due to a crash)
46
- puts "[consumer1] Got message ##{properties.headers['i']}, SKIPPED"
47
- end
48
- end
49
-
50
- q2 = ch2.queue("bunny.examples.acknowledgements.explicit", :auto_delete => false)
51
- q2.bind(x).subscribe(:manual_ack => true, :block => false) do |delivery_info, properties, payload|
52
- # do some work
53
- sleep(0.2)
54
-
55
- ch2.acknowledge(delivery_info.delivery_tag, false)
56
- puts "[consumer2] Got message ##{properties.headers['i']}, redelivered?: #{delivery_info.redelivered?}, ack-ed"
57
- end
58
-
59
- t1 = Thread.new do
60
- i = 0
61
- loop do
62
- sleep 0.5
63
-
64
- x.publish("Message ##{i}", :headers => { :i => i })
65
- i += 1
66
- end
67
- end
68
- t1.abort_on_exception = true
69
-
70
- t2 = Thread.new do
71
- sleep 4.0
72
-
73
- connection1.close
74
- puts "----- Connection 1 is now closed (we pretend that it has crashed) -----"
75
- end
76
- t2.abort_on_exception = true
77
-
78
-
79
- sleep 7.0
80
- connection2.close
81
- connection3.close
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
-
4
- require "rubygems"
5
- require "bunny"
6
- require "ruby-prof"
7
-
8
- conn = Bunny.new
9
- conn.start
10
-
11
- puts
12
- puts "-" * 80
13
- puts "Benchmarking on #{RUBY_DESCRIPTION}"
14
-
15
- n = 50_000
16
- ch = conn.create_channel
17
- x = ch.default_exchange
18
- s = "z" * 4096
19
-
20
- # warm up the JIT, etc
21
- puts "Doing a warmup run..."
22
- 16000.times { x.publish(s, :routing_key => "anything") }
23
-
24
- # give OS, the server and so on some time to catch
25
- # up
26
- sleep 2.0
27
-
28
- result = RubyProf.profile do
29
- n.times { x.publish(s, :routing_key => "anything") }
30
- end
31
-
32
- printer = RubyProf::FlatPrinter.new(result)
33
- printer.print(STDOUT, {})
data/repl DELETED
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
-
3
- bundle exec ruby `which ripl` -Ilib -r'bunny' -r'ripl/multi_line' -r'ripl/irb'
@@ -1,29 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIFAjCCAuqgAwIBAgIJAOh5ofB2iC1IMA0GCSqGSIb3DQEBCwUAMDExIDAeBgNV
3
- BAMMF1RMU0dlblNlbGZTaWduZWR0Um9vdENBMQ0wCwYDVQQHDAQkJCQkMB4XDTE3
4
- MDcxMjE3MDUyNFoXDTI3MDcxMDE3MDUyNFowMTEgMB4GA1UEAwwXVExTR2VuU2Vs
5
- ZlNpZ25lZHRSb290Q0ExDTALBgNVBAcMBCQkJCQwggIiMA0GCSqGSIb3DQEBAQUA
6
- A4ICDwAwggIKAoICAQDLlcfVD3JI34j3akZEcw9A6Q3ra7wCXiBuK6i+QcB0Gpp/
7
- AdQVyEwuC8DVwqnnCLoR0KKU7Iuhjwqk1aXzIcZAy42TiEtwCTJ1Rajlp6hjonWi
8
- EYp+HFm6UZdeM94bV5khV0+vwE/MDcKpXzKYJlbYOv+RSPdizWb7m+tRnyQf79M8
9
- wL8nx1CJbokV/fgmauRnbOkpAWSmq8MbuthdQHLNVAnHV4i4SEBB8KBiB1Rrxu+O
10
- serH1KB+8ABLGUpLM/0rtUFlgo5waysNHUUvqYIcXff7yXNsNblZM8YYnhAK0rzX
11
- y6MdqSgUHycQYCCJ7nuIVagpxLKSkJTJtH9anDzo0Y5c/w6huCxsnhbrBwg3FHga
12
- sRPzuouIROH09yKbrOmbG7wmU3mWyB3bhVe+YmivQMq55QtHo3C/gBVsvsrjH/ql
13
- ecxYa8aPRpeJU4eUjuvywY9200C3SdOyP+iM/yE9r3RG/B2qPhB6PqG/3SXkURGi
14
- 3B2bX1nD7VdDPbfO14j0m0rHBTnu3Ieao+KaAMpd6gWrPkOHRF87CYF4NOtqjFr8
15
- rNe6cxR3Cy/h5YH7DYpS8VgIjMTkIEEo4sTDnQsFTE1fiPjzsfUl0cwSAPbIR4Hb
16
- Sp/kt5zWSlV89u9CbIpGvvnKZ0fUiaVW9e3rjowPtBjcCSARn4tIIOftjVEmmwID
17
- AQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsF
18
- AAOCAgEAUrza43ghwOUIuqbQLAfosr/9ucXnTA84Fcyp27bKbLme2Vfc9iRLwjib
19
- hd9D1MygCSjxW5szWs/pwC486cGjWlUY5y4g5fS74S4hLvKW8jVBKuF3i0J8kNkO
20
- 7L2XZJb+0rQcFWCOh8dAJpBJqv8dH0xqRga9mVecHB+PtQY0G0qRkdCTCiIKr8gF
21
- yhzoq8Rmo+H4yD8OfbMJHSS4vcEFgS6KhVLqvrGQ1cnfjWjaDeSMalHcnUxeYydV
22
- dPAdi+/4k8jtjXTEAxTlVhsRwUJi4+jF43X3jNZ1dbrZV5SATnxJD2ygDjHH+Xw3
23
- R97bARIgvXWmDHvIlxdIpmDJws3AvSThofI2uhTLSg5JLmRNZCjhcZc9EsnAxxAV
24
- LKLG85Fp1sGfqvPeT+n6wfqNXyZ6X3pPXoR412uOdD3brKWfNM1rjqqdm6PWqxg0
25
- wA3Axv/ZbtFWYcBVbePmA8SQATPnuAWYAueQ6R3vQwMFhf+KMt+GBQGt2gsIN4Gb
26
- FbtSGLH5dOz9ap2zjSL5QS7ZRt2O1d4s5zEdRBadA19fr2hTA8KX4tvmoXhc2Iav
27
- lmnAW1MDAGkhzIQmSfxM0N7rr4fNrqTHVv6NjUjeHxi483RxVXL6ZWu2Kb7LCVzs
28
- pHlumeVpCafYGiBHt75SRFkPsn8HA+g8PYfSXCgLrA6tW3zMj7U=
29
- -----END CERTIFICATE-----
data/spec/tls/ca_key.pem DELETED
@@ -1,52 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDLlcfVD3JI34j3
3
- akZEcw9A6Q3ra7wCXiBuK6i+QcB0Gpp/AdQVyEwuC8DVwqnnCLoR0KKU7Iuhjwqk
4
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- eJQoAxI9vFjnFOo0Plg6FrgqoRur5aKF3sd7/N8P/6KCSXJmwLhopCqWdQfMrOPo
23
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- mLYwdrbsTt+2/ZScPaqCxcVokU7le2PPz3ZWNlIqSqOSqHciByVN4+FGlVQLSilf
40
- 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
- GTDIeFaiRHUDsoj4wHJxoxZItGzJTYnRv5TT9BpCCeEiBoZLHLoOw6LLG5fTWJzS
42
- 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
- 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
- kB+QU7nP0del1vbdhyMLXTAuONOX86Wf/dpHmKLhtxrEC0G5AvT5ZYcMyge+lT9h
45
- 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
- ETUCggEBAMNuHhImT8j8z+Of9ZW9izLFExgyfCxPvxzro9UwJqymF16lnu9yKaM9
47
- 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
- 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
- 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
- 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
51
- uM2skhC6ROJPn3CCWPupNuPV2m7kCo4=
52
- -----END PRIVATE KEY-----