首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带bunny的直接回复伪队列

带bunny的直接回复伪队列
EN

Stack Overflow用户
提问于 2017-07-13 01:32:26
回答 1查看 203关注 0票数 1

我使用bunny 2.7.0在ruby2.3中创建了一个rabbitmq rpc,每个客户端有一个应答队列。但我预计会有相当多的客户,这样做效率不高。我想使用rabbitmq的直接回复功能

代码语言:javascript
复制
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)

在最后一行代码中,我收到了错误

代码语言:javascript
复制
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描述了这个队列的存在和可用性。

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

代码语言:javascript
复制
consumer = reply_queue.subscribe do |_, properties, payload|
    # action
end

我不明白我做错了什么(

有类似的主题和这种方法的例子,但创建在其他语言和工具,如nodejs,这似乎工作得很好。我对巴尼做错了什么?

更新

找到问题了-我使用了rabbitmq服务器的odler版本。该id尚不支持直接回复队列

EN

回答 1

Stack Overflow用户

发布于 2017-07-13 04:44:39

我认为它是在尝试创建它,而你是不允许这样做的。

https://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-September/030095.html

我的红宝石有点生锈了,但试一下这个:

代码语言:javascript
复制
channel = connection.create_channel
channel.queue_declare('amq.rabbitmq.reply-to', :passive => true)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45064213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档