我正在使用 bunny 2.7.0 在 ruby 2.3 中创建一个 rabbitmq rpc,我已经为每个客户端创建了一个回复队列。但是我预计会有相当多的客户,这样做效率不高。我想使用rabbitmq的直接回复功能
connection = Bunny.new(rabbitmq_url, :automatically_recover => true)
connection.start
channel = connection.create_channel
reply_queue = channel.queue('amq.rabbitmq.reply-to', no_ack: true)
在最后一行代码我收到错误
Bunny::AccessRefused: ACCESS_REFUSED - queue name 'amq.rabbitmq.reply-to' contains reserved prefix 'amq.*'
理论上这是由于http://rubybunny.info/articles/queues.html而预期的
但另一方面 - 有一篇文章https://www.rabbitmq.com/direct-reply-to.html描述了该队列的存在性和可用性。
我想声明一个队列,因为我需要订阅它才能接收响应
consumer = reply_queue.subscribe do |_, properties, payload|
# action
end
我不明白我做错了什么(
有类似的主题与这种方法的示例,但在其他语言和工具(如 nodejs)上创建,并且似乎工作正常。我对兔子做错了什么?
更新
发现了问题 - 我使用了 odler 版本的 rabbitmq 服务器。那个id不支持直接回复队列的