AMQP 转换发送和接收从 Spring Boot 1.5 移动到 2 失败



我正在将代码从Spring Boot 1.5.x迁移到2.0.3.RELEASE。

它使用 RabbitMQ 通过convertSendAndReceive(...)方法对一组远程引擎进行 RPC 样式调用。

在 1.5 中一切正常,但在迁移的代码中失败。

日志记录最初显示

SimpleConsumer [queue=amq.rabbitmq.reply-to, consumerTag=amq.ctag-39fo5C1y6q8J9OevWDN3_A identity=6ffebba9] started 

消息到达引擎并得到正确处理。

但是,返回值为空,并记录以下内容

ERROR o.s.amqp.rabbit.core.RabbitTemplate No correlation header in reply

在 1.5 中,我们没有向调用方添加相关 ID。我们现在需要还是还需要做其他事情?

蒂亚。

来自春季 amqp 文档

对于 verion 2.0 之前的版本,RabbitTemplate 为每个请求创建一个新的使用者,并在收到回复(或超时(时取消使用者。现在,该模板改用 DirectReplyToMessageListenerContainer,允许重复使用使用者;该模板仍然负责关联回复,因此不会有延迟回复发送给其他发件人的危险。如果要还原到以前的行为,请将属性 useDirectReplyToContainer(使用 XML 配置时直接回复容器(设置为 false。

所以例如...

rabbitTemplate.setUseDirectReplyToContainer(false);

相关内容

最新更新