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集成

spring-cloud-sleuth 与 spring-amqp 集成

spring-amqp手动停止RabbitListener

040 RabbitMq及数据同步02

rabbitmq 配置多个消费者(转载)

Spring AMQP 惰性队列@RabbitListener 并简化直接回复配置