7

在我的项目中,我看到有机会两次确认相同的交付标签。发生这种情况时,消费者会从队列中解除绑定,并且不会有更多消息到达消费者(使用 RabbitMQ 管理仪表板观察)。

如何检查给定的交付标签是否已被确认?有没有推荐的方法来使用 RabbitMQ API 处理这种情况?

我试图避免在我的代码中确认两次,但不幸的是,由于一些设计问题,这是不可能的。

4

1 回答 1

2

由于AMQP 协议参考对此非常清楚:

一条消息不能被多次确认。接收对等方必须验证非零传递标记是否指的是传递的消息,如果不是这种情况,则引发通道异常。...

快速测试表明,至少在当前版本中,这不会导致消费者停止工作,但该行为可能取决于实现。

简而言之,您必须审查您的设计以避免这种情况。

于 2019-05-17T09:05:20.703 回答