Method: Warren::Queue::AMQPAdapter.subscribe

Defined in:
lib/warren/adapters/amqp_adapter.rb

.subscribe(queue_name, &block) ⇒ Object

Subscribes to a queue and runs the block for each message received

Warren::Queue.subscribe("example") {|msg| puts msg }

Expects a block and raises NoBlockGiven if no block is given.

Raises:



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/warren/adapters/amqp_adapter.rb', line 60

def self.subscribe queue_name, &block
  raise NoBlockGiven unless block_given?
  queue_name = self.queue_name if queue_name == :default
  # todo: check if its a valid queue?
  do_connect(false) do
    queue = MQ::Queue.new(MQ.new, queue_name)
    queue.subscribe do |msg|
      msg = Warren::MessageFilter.unpack(msg)
      block.call(msg)
    end
  end
end