Class: ZMQSubscriptionClient

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_mailman/zmq_client.rb

Class Method Summary collapse

Class Method Details

.run(channel, listener, message_builder = RubyMailman::Subscription::Message) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ruby_mailman/zmq_client.rb', line 22

def self.run(channel, listener, message_builder = RubyMailman::Subscription::Message)
  context = ZMQ::Context.new
  connection = context.socket(ZMQ::SUB)
  connection.connect(ZMQConfiguration.server)
  connection.setsockopt(ZMQ::SUBSCRIBE, channel)

  Thread.new do
    loop do
      received_channel = ''
      connection.recv_string(received_channel)
      message = []
      connection.recv_strings(message)
      listener.call(received_channel, message_builder.new(received_channel, message))
    end
  end
end