我怎么知道Rabbitmq是否成功了?

时间:2015-11-05 10:30:34

标签: rabbitmq

当我使用RMQ设置手动Ack时,但我怎么知道ack是否成功完成?如果在执行长操作之前在basic.ack之前有异常,则该消息将被发送给另一个消费者。如何我可以避免吗?

1 个答案:

答案 0 :(得分:0)

  

我怎么能避免这种情况?

你不能。

在某些时候它会发生,你的代码需要优雅地处理这个场景。这通常在您的邮件处理中使用idempotence完成。

也就是说,您允许多次处理消息(因为它会发生),但您只对系统进行一次基础更改。

处理此问题的一种常见/简单方法是使ID与每条消息相关联。在处理消息之前,请检查数据库中的ID是否已标记为已完成。如果不是,则处理该消息。处理消息时,使用该ID更新数据库。这样,当(不是)你遇到消息被处理两次的情况时,你实际上不会再进行两次处理/系统更改。