Sha256: 2df4be170ea317754d2fa275f2cbce7f5192abee3f73233cdc88c05e172cd57f

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

# encoding: utf-8

$:.unshift File.dirname(__FILE__) + '/../../lib'

require 'mq'

if RUBY_VERSION == "1.8.7"
  module ArrayExtensions
    def sample
      self.choice
    end # sample
  end

  class Array
    include ArrayExtensions
  end
end



EM.run do
  connection = AMQP.connect
  mq         = MQ.new(connection)

  show_stopper = Proc.new do
    $stdout.puts "Stopping..."
    # now change this to just EM.stop and it
    # unbinds instantly
    connection.close {
      EM.stop { exit }
    }
  end

  Signal.trap "INT", &show_stopper

  $stdout.puts "Bound! Running #{AMQP::VERSION} version of the gem."

  queue1    = mq.queue("queue1")
  queue2    = mq.queue("queue2")
  queue3    = mq.queue("queue3")

  queues    = [queue1, queue2, queue3]

  # Rely on default direct exchange binding, see section 2.1.2.4 Automatic Mode in AMQP 0.9.1 spec.
  exchange = MQ::Exchange.default

  queue1.subscribe do |payload|
    puts "Got #{payload} for #{queue1.name}"
  end

  queue2.subscribe do |payload|
    puts "New message to queue #{queue2.name}"
  end

  queue3.subscribe do |payload|
    puts "There is a message for #{queue3.name}"
  end

  EM.add_periodic_timer(1) do
    q = queues.sample

    $stdout.puts "Publishing to default exchange with routing key = #{q.name}..."
    exchange.publish "Some payload", :routing_key => q.name
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
amqp-0.7.0 examples/mq/automatic_binding_for_default_direct_exchange.rb