Skip to content

Instantly share code, notes, and snippets.

@mwotton
Created March 7, 2012 23:02
Show Gist options
  • Save mwotton/1996989 to your computer and use it in GitHub Desktop.
Save mwotton/1996989 to your computer and use it in GitHub Desktop.
require 'rzmq_brokers'
require 'ffi-rzmq'
log_transport = "inproc://reactor_log"
load 'config.rb'
class RunBroker
def initialize(master_context, log_transport, broker_endpoint)
@broker_config = RzmqBrokers::Broker::Configuration.new do
name 'broker-reactor'
exception_handler nil
poll_interval 250
context master_context
log_endpoint log_transport
broker_endpoint broker_endpoint
broker_bind true
broker_klass RzmqBrokers::Majordomo::Broker::Handler
service_klass RzmqBrokers::Majordomo::Broker::Service
worker_klass RzmqBrokers::Broker::Worker
base_msg_klass RzmqBrokers::Majordomo::Messages
end
end
def run
@broker = RzmqBrokers::Broker::Broker.new(@broker_config) # new thread
end
end # RunBroker
broker_address = APP_CONFIG['broker'] or raise "need to define the address to listen on"
master_context = ZMQ::Context.new
logger_config = ZM::Configuration.new do
context master_context
name 'logger-server'
end
ZM::Reactor.new(logger_config).run do |reactor|
log_config = ZM::Server::Configuration.new do
endpoint log_transport
bind true
topic ''
context master_context
reactor reactor
end
log_config.extra = {:file => STDOUT}
log_server = ZM::LogServer.new(log_config)
end
sleep 1
RunBroker.new(master_context, log_transport, broker_address).run
# run loop
while true
sleep 1
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment