require 'rubygems'
require 'timeout'
require 'mq'

10.times do |i|
  puts "Run: #{i}"

  em = Thread.new { EM.run }

  q = MQ.queue("test#{i}")

  @msg = nil
  q.subscribe { |msg| @msg = msg }
  q.publish i

  begin
    Timeout::timeout(5) do
      loop do
        break unless @msg.nil?
        sleep 1
      end

      puts "MSG: #{@msg}"
    end
  rescue Timeout::Error
    puts "Timeout on test#{i}"
  end

  AMQP.stop { EM.stop }
  em.join

  puts "------------"
end