Я только начал использовать Ruby и пишу кусок, чтобы использовать некоторые сообщения из очереди RabbitMQ. Я использую Банни для этого.
Итак, я создал свои очереди и связал их для обмена.
Однако теперь я не уверен, как я справляюсь с подпиской на них обоих и позволяю приложению ruby продолжать работать (хочу, чтобы сообщения продолжали поступать, т.е. не блокировались или, по крайней мере, не в течение длительного времени), пока я фактически не завершил его с CTRL + C.
Я пытался использовать :block => true
, однако, поскольку у меня есть 2 разные очереди, на которые я подписываюсь, использование этого означает, что оно потребляет только одну.
Так вот, как я потребляю сообщения:
def consumer
begin
puts ' [*] Waiting for messages. To exit press CTRL+C'
@oneQueue.subscribe(:manual_ack => true) do |delivery_info, properties, payload|
puts('Got One Queue')
puts "Received #{payload}, message properties are #{properties.inspect}"
end
@twoQueue.subscribe(:manual_ack => true) do |delivery_info, properties, payload|
puts('Got Two Queue')
puts "Received #{payload}, message properties are #{properties.inspect}"
end
rescue Interrupt => _
#TODO - close connections here
exit(0)
end
end
Любая помощь будет оценена.
Спасибо!