AMQP convertSendAndReceive无法从Spring Boot 1.5移动到2

问题描述 投票:2回答:1

我正在将代码从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。我们现在需要或者还有其他我们需要做的事吗?

TIA。

spring-boot rabbitmq migration
1个回答
2
投票

来自the Spring amqp docs

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

所以例如......

    rabbitTemplate.setUseDirectReplyToContainer(false);
© www.soinside.com 2019 - 2024. All rights reserved.