Sha256: 99596f61f3b0a317a50cdab55dda23c0ac9c417996b7809f0c2e3d19ddc7d5b6

Contents?: true

Size: 1.54 KB

Versions: 19

Compression:

Stored size: 1.54 KB

Contents

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

AMQP.start(:host => 'localhost') do

  def log *args
    p [ Time.now, *args ]
  end

  def publish_stock_prices
    mq = MQ.new
    EM.add_periodic_timer(1){
      puts

      { :appl => 170+rand(1000)/100.0,
        :msft => 22+rand(500)/100.0
      }.each do |stock, price|
        stock = "usd.#{stock}"

        log :publishing, stock, price
        mq.topic('stocks').publish(price, :key => stock)
      end
    }
  end

  def watch_appl_stock
    mq = MQ.new
    mq.queue('apple stock').bind(mq.topic('stocks'), :key => 'usd.appl').subscribe{ |price|
      log 'apple stock', price
    }
  end

  def watch_us_stocks
    mq = MQ.new
    mq.queue('us stocks').bind(mq.topic('stocks'), :key => 'usd.*').subscribe{ |info, price|
      log 'us stock', info.routing_key, price
    }
  end

  publish_stock_prices
  watch_appl_stock
  watch_us_stocks

end

__END__

[Fri Aug 15 01:39:00 -0700 2008, :publishing, "usd.appl", 173.45]
[Fri Aug 15 01:39:00 -0700 2008, :publishing, "usd.msft", 26.98]
[Fri Aug 15 01:39:00 -0700 2008, "apple stock", "173.45"]
[Fri Aug 15 01:39:00 -0700 2008, "us stock", "usd.appl", "173.45"]
[Fri Aug 15 01:39:00 -0700 2008, "us stock", "usd.msft", "26.98"]

[Fri Aug 15 01:39:01 -0700 2008, :publishing, "usd.appl", 179.72]
[Fri Aug 15 01:39:01 -0700 2008, :publishing, "usd.msft", 26.56]
[Fri Aug 15 01:39:01 -0700 2008, "apple stock", "179.72"]
[Fri Aug 15 01:39:01 -0700 2008, "us stock", "usd.appl", "179.72"]
[Fri Aug 15 01:39:01 -0700 2008, "us stock", "usd.msft", "26.56"]

Version data entries

19 entries across 19 versions & 6 rubygems

Version Path
adamh-amqp-0.6.3.1 examples/mq/stocks.rb
brontes3d-amqp-0.6.4.0 examples/mq/stocks.rb
brontes3d-amqp-0.6.4.1 examples/mq/stocks.rb
brontes3d-amqp-0.6.4.2 examples/mq/stocks.rb
brontes3d-amqp-0.6.4.3 examples/mq/stocks.rb
brontes3d-amqp-0.6.4 examples/mq/stocks.rb
fotonauts-amqp-0.6.1 examples/mq/stocks.rb
fotonauts-amqp-0.6.4 examples/mq/stocks.rb
tmm1-amqp-0.6.1 examples/mq/stocks.rb
tmm1-amqp-0.6.3 examples/mq/stocks.rb
tmm1-amqp-0.6.4 examples/mq/stocks.rb
amqp-0.7.0.pre examples/mq/stocks.rb
totty-amqp-0.6.7.1 examples/mq/stocks.rb
totty-amqp-0.6.7.1.totty examples/mq/stocks.rb
brontes3d-amqp-0.6.7.1 examples/mq/stocks.rb
amqp-0.6.7 examples/mq/stocks.rb
amqp-0.6.6 examples/mq/stocks.rb
amqp-0.6.5 examples/mq/stocks.rb
amqp-0.6.4 examples/mq/stocks.rb