【发布时间】:2015-08-03 18:25:47
【问题描述】:
在我的项目中,我发现有机会两次确认相同的交付标签。发生这种情况时,消费者会从队列中解除绑定,并且不会有更多消息到达消费者(使用 RabbitMQ 管理仪表板观察到)。
如何检查给定的交付标签是否已被确认?有没有推荐的方法来使用 RabbitMQ API 处理这种情况?
我试图避免在我的代码中确认两次,但不幸的是,由于一些设计问题,这是不可能的。
【问题讨论】:
-
@Gas amqp 协议声明
A message MUST not be acknowledged more than once.。兔子客户端可以在确认之上有一个层。如果我保持正确,这就是 Spring 的行为。 -
@NicolasLabrot 是的,你是对的,顺便说一句,我尝试使用 java 客户端确认多个,但我没有遇到问题。实际上从未有过这种情况,也许我评论有点肤浅,但在我的测试中我没有看到副作用。我提供修改评论。谢谢!
-
@syodage 我删除了第一条评论,因为它不正确。顺便说一句,如果您发布一些代码,我们会尽力帮助您。
-
@Gabriele 这是我确认 channelObj.basicAck(Long.parseLong(dTag), false);如果我为同一条消息触发两次,则队列开始有线连接....有没有一种方法可以检查 dtag 是否存在,然后只有我发送确认?
标签: rabbitmq rabbitmq-exchange