我刚刚开始使用 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
任何帮助,将不胜感激。
谢谢!