RabbitMQ消息丢失了

时间:2014-09-09 16:21:37

标签: python go rabbitmq

我使用Python api将消息插入RabbitMQ,然后使用go api从RabbitMQ获取消息。

密钥1 :由于性能原因,RabbitMQ ACK设置为false。

我通过python api向RabbitMQ插入大约100,000,000条消息,但是当我使用go api获取时 消息,我发现消息的插入号码不等于获取号码。插入动作和

获取行动是并发的。

密钥2 :丢失的消息率不超过1,000,000%1。

插入操作有log,python api显示所有插入的消息都成功。

获取操作有记录,去api显示所有获取消息都成功。 但数量并不相等。

问题1 :我不知道如何找到邮件丢失的地方。有人可以给我一个如何找到邮件丢失位置的建议吗?

问题2 :是否有任何策略可以确保信息不会丢失?

1 个答案:

答案 0 :(得分:1)

为了测试您的所有消息是否已发布,您可以这样做:

  1. 停止消费者。
  2. 在发布商中启用确认。在python中,您可以通过在代码中添加额外的行来实现:channel.confirm_delivery()。如果发布消息,这将基本返回一个布尔值。或者,您可以在mandatory中使用basic_publish标记。
  3. 根据需要发送尽可能多的邮件。
  4. 确保所有basic_publish()方法都返回True。
  5. 计算Rabbit中的消息数。
  6. 通过no_ack = False
  7. 在消费者中启用Ack
  8. 消费所有消息。
  9. 这可以让您了解邮件丢失的位置。