刚刚升级到新版本的 RabbitMQ - 2.3.1 - 现在出现以下错误:
PRECONDITION_FAILED unknown delivery tag 1
...随后通道关闭。这适用于较旧的 RabbitMQ,无需客户端更改。
在应用程序行为方面:
当应用程序 A 想要向应用程序 b 发送异步消息并接收来自 B 的答复时,算法如下:
- App A生成唯一ID并将其放入消息对象中
- 然后应用程序A订阅一个新的队列,队列名称和路由键都等于uuid。
- 应用程序 B 打开消息,进行一些计算,然后使用收到的路由密钥将结果返回到通道。
- 应用程序 A 获得答案并关闭队列。
到目前为止,1.7.0 中一切都进展顺利。 2.3.1 出了什么问题?
当应用程序A调用basicPublish()
,应用程序B立即抛出以下异常:
com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=406,reply-text=PRECONDITION_FAILED - unknown delivery tag 1,class-id=60,method-id=80),null,""}
at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:191)
at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:159)
at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:110)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:438)
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=406,reply-text=PRECONDITION_FAILED - unknown delivery tag 1,class-id=60,method-id=80),null,""}