summaryrefslogtreecommitdiff
path: root/deps/rabbitmq_consistent_hash_exchange/examples/ruby/example3.rb
diff options
context:
space:
mode:
Diffstat (limited to 'deps/rabbitmq_consistent_hash_exchange/examples/ruby/example3.rb')
-rw-r--r--deps/rabbitmq_consistent_hash_exchange/examples/ruby/example3.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/deps/rabbitmq_consistent_hash_exchange/examples/ruby/example3.rb b/deps/rabbitmq_consistent_hash_exchange/examples/ruby/example3.rb
new file mode 100644
index 0000000000..dbd7956cf7
--- /dev/null
+++ b/deps/rabbitmq_consistent_hash_exchange/examples/ruby/example3.rb
@@ -0,0 +1,37 @@
+#!/usr/bin/env ruby
+
+require 'bundler'
+Bundler.setup(:default, :test)
+require 'bunny'
+
+conn = Bunny.new
+conn.start
+
+ch = conn.create_channel
+ch.confirm_select
+
+q1 = ch.queue("q1", durable: true)
+q2 = ch.queue("q2", durable: true)
+q3 = ch.queue("q3", durable: true)
+q4 = ch.queue("q4", durable: true)
+
+[q1, q2, q3, q4].each(&:purge)
+
+x = ch.exchange("x3", type: "x-consistent-hash", durable: true, arguments: {"hash-property" => "message_id"})
+
+[q1, q2].each { |q| q.bind(x, routing_key: "1") }
+[q3, q4].each { |q| q.bind(x, routing_key: "2") }
+
+n = 100_000
+(0..n).map(&:to_s).each do |i|
+ x.publish(i.to_s, routing_key: rand.to_s, message_id: i)
+end
+
+ch.wait_for_confirms
+puts "Done publishing!"
+
+# wait for queue stats to be emitted so that management UI numbers
+# are up-to-date
+sleep 5
+conn.close
+puts "Done"