Ruby 带bunny-gem的直接应答伪队列

Ruby 带bunny-gem的直接应答伪队列,ruby,rabbitmq,rpc,bunny,Ruby,Rabbitmq,Rpc,Bunny,我正在使用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.q

我正在使用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.*'
理论上,这是由于

但另一方面,有一篇文章描述了这个队列的存在和可用性

我想声明一个队列,因为我需要订阅它以接收响应

consumer = reply_queue.subscribe do |_, properties, payload|
    # action
end
我不明白我把它弄错了什么(

类似的主题也有类似的例子,但都是在其他语言和工具(比如nodejs)上创建的,看起来效果不错

更新


发现问题-我使用了Ordler版本的rabbitmq服务器。该服务器还不支持直接回复队列

我认为它正在尝试创建它,而您不允许这样做

我的红宝石有点生锈了,试试看:

channel = connection.create_channel
channel.queue_declare('amq.rabbitmq.reply-to', :passive => true)

我认为这是在试图创造一种你不被允许的东西

我的红宝石有点生锈了,试试看:

channel = connection.create_channel
channel.queue_declare('amq.rabbitmq.reply-to', :passive => true)