Sha256: b0f4f830b88ee292068ce88d5ff775d331879db2f2f30ff98e76541b717a03f0

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

require 'dripdrop'
Thread.abort_on_exception = true #Always a good idea in multithreaded apps.

# Encapsulates our EM and ZMQ reactors
DripDrop::Node.new do
  # Define all our sockets
  route :stats_pub,      :zmq_publish,   'tcp://127.0.0.1:2200', :bind
  route :stats_sub1,     :zmq_subscribe, stats_pub.address, :connect
  route :stats_sub2,     :zmq_subscribe, stats_pub.address, :connect
  route :http_collector, :http_server,   'http://127.0.0.1:8080'
  route :http_agent,     :http_client,   http_collector.address
    
  stats_sub1.on_receive do |message|
    puts "Receiver 1: #{message.body}"
  end
  stats_sub2.on_receive do |message|
    puts "Receiver 2: #{message.body}"
  end
  
  i = 0
  http_collector.on_receive do |message,response|
    i += 1
    stats_pub.send_message(message)
    response.send_message(:name => 'ack', :body => {:seq => i})
  end

  EM::PeriodicTimer.new(1) do
    msg = DripDrop::Message.new('http/status', :body => "Success #{i}")
    http_agent.send_message(msg) do |resp_msg|
      puts "RESP: #{resp_msg.body['seq']}"
    end
  end
end.start! #Start the reactor and block until complete

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dripdrop-0.11.0-java example/combined.rb
dripdrop-0.11.0 example/combined.rb