Permalink
Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
35 lines (22 sloc) 1.72 KB

DripDrop

Note: For now, for PUSH/PULL support you'll need to build zmqmachine from my fork of zmqmachine, the official gem does not yet have this

DripDrop is ZeroMQ(using zmqmachine) + Event Machine simplified for the general use case + serialization helpers.

Here's an example of the kind of thing DripDrop makes easy, from examples/pubsub.rb

DripDrop::Node.new do |node|
  z_addr = 'tcp://127.0.0.1:2200'

  pub = node.zmq_publish(z_addr,:bind)
  sub = node.zmq_subscribe(z_addr,:connect).on_recv do |message|
    puts "Receiver 1 #{message.inspect}"
  end
  sub = node.zmq_subscribe(z_addr, :connect).on_recv do |message|
    puts "Receiver 2 #{message.inspect}"
  end

  node.zm_reactor.periodical_timer(5) do
    pub.send_message(DripDrop::Message.new('test', :body => 'Test Payload'))
  end
end

Want to see a longer example encapsulating both zmqmachine and eventmachine functionality? Check out this file, which encapsulates all the functionality of the diagram below:

topology

#How It Works

DripDrop encapsulates both zmqmachine, and eventmachine. It provides some sane default messaging choices, using BERT (A binary, JSON, like serialization format) and JSON for serialization. While zmqmachine and eventmachine APIs, some convoluted ones, the goal here is to smooth over the bumps, and make them play together nicely.

Copyright (c) 2010 Andrew Cholakian. See LICENSE for details.