Spring-AMQP 和直接回复
Posted
技术标签:
【中文标题】Spring-AMQP 和直接回复【英文标题】:Spring-AMQP and Direct Reply-To 【发布时间】:2014-12-04 15:00:12 【问题描述】:我发现这里列出了这个 RabbitMQ“扩展”:http://www.rabbitmq.com/direct-reply-to.html,我用amq.rabbitmq.reply-to
设置了RabbitTemplate
的“replyQueue”我尝试了一个已经函数的 RPC 调用,它已经运行了,但是现在它只是超时。
感谢任何帮助!
【问题讨论】:
你找到解决办法了吗? 【参考方案1】:使用固定回复队列(无论是用户指定的还是amq.rabbitmq.reply-to
)时,您必须配置<reply-listener/>
- 请参阅the Spring AMQP documentation。对于amq.rabbitmq.reply-to
,您应该将回复容器的确认设置为NONE
(在 RabbitMQ 中是 no-ack)。
更正:RabbitTemplate
目前不支持直接回复sendAndReceive()
操作;但是,您可以指定一个固定的回复队列(带有回复侦听器)。或者您可以使用 rabbitTemplate.execute()
和 ChannelCallback
来使用来自该“队列”的回复(并发布)。
如果您想跟踪它,我已经创建了一个JIRA issue。
1.4.1 及以上版本现在支持直接回复。
【讨论】:
根据link:“当模板不使用固定的replyQueue(或正在使用Direct reply-to - 请参阅第3.7.1节,“RabbitMQ Direct reply-to”)时,侦听器容器不需要。”此外,JIRA 问题已经结束,但是我遇到了与主题启动者相同的问题 - 客户端未收到回复。 请开始一个新问题,显示配置,并提供版本信息。 一个常见的错误是错误地输入了直接回复名称(例如amq.rabbitmq.reply.to
而不是amq.rabbitmq.reply-to
)。
我已经通过直接从官方网站更新我的 rabbitmq 服务器解决了我的问题。以上是关于Spring-AMQP 和直接回复的主要内容,如果未能解决你的问题,请参考以下文章
spring-cloud-sleuth与spring-amqp集成