不使用replyTo

时间:2018-04-07 22:36:32

标签: spring spring-boot rabbitmq amqp spring-amqp

我遇到了一个错误,RabbitMQ 有时抱怨“PRECONDITION_FAILED - 快速回复消费者不存在”,尽管如下所示,我发送的消息没有快速回复,回复是null。大约50%的时间消息将被发送到交换/队列,正如我所料,另外50%的时间我收到此错误会导致消息被破坏。我使用spring amqp 1.6.0在spring boot 1.3.6中运行此代码。使用Erlan 18.1,RabbitMQ服务器为3.5.5。我无法更新版本,因为这是生产代码。

我的代码非常简单。我声明了一个响应交换/队列以进行进一步的通信。

amqpAdmin.declareExchange(exchange);
amqpAdmin.declareQueue(queue);
amqpAdmin.declareBinding(binding);

我将amqp消息发送到主题交换的交换/路由密钥,但由于以下错误,它永远不会在那里:

Publish Message Success: [MyObject], MessageProperties [headers={__TypeId__=com.do.comp.amqp}, timestamp=null, messageId=null, userId=null, appId=null, clusterId=null, type=null, correlationId=null, replyTo=null, contentType=application/json, contentEncoding=UTF-8, contentLength=97, deliveryMode=PERSISTENT, expiration=null, priority=0, redelivered=null, receivedExchange=null, receivedRoutingKey=null, deliveryTag=0, messageCount=null]] 
AMQP Connection 10.12.36.75:5672 [ERROR] org.springframework.amqp.rabbit.connection.CachingConnectionFactory.log(CachingConnectionFactory.java:1198) - Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - fast reply consumer does not exist, class-id=60, method-id=40)<br>
http-nio-8122-exec-7 [DEBUG] org.springframework.amqp.rabbit.connection.CachingConnectionFactory.getCachedChannelProxy(CachingConnectionFactory.java:476) - Creating cached Rabbit Channel from AMQChannel(amqp://admin@10.12.36.75:5672/,3)<br>
http-nio-8122-exec-7 [DEBUG] org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1392) - Executing callback on RabbitMQ Channel: Cached Rabbit Channel: AMQChannel(amqp://admin@10.12.36.75:5672/,3), conn: Proxy@782534f9 Shared Rabbit Connection: SimpleConnection@74658797 [delegate=amqp://admin@10.12.36.75:5672/, localPort= 60282]

然后我会听取我为永远不会发生的响应而创建的队列:

rabbitTemplate.receive(queue);

上面的错误与直接回复队列有关,我没有使用它,我的回复messageHeader是null。另一个奇怪的事情是我们在三个不同的服务器上运行这个确切的jar用于测试和开发,其中只有一个似乎有问题,但它们都是一切的相同版本。 RabbitMQ v.3.5.5 Erland 18.1

当reply-to为null时,为什么RabbitMQ会抛出快速回复错误?

0 个答案:

没有答案