RabbitMq:在消息处理期间发生异常时消息从队列中丢失

时间:2016-10-16 11:16:13

标签: ruby-on-rails rabbitmq message-queue bunny

我是rails开发者的ruby。我在项目中使用rabbitMQ,一旦数据进入队列就处理了一些数据。我正在使用bunny gem一个rabbitMQ客户端,提供与RabbitMq交互的接口。

我的问题是,每当发生异常或服务器意外停止从队列处理数据时,我的队列消息就会丢失。

我想知道人们如何处理来自rabbitMQ队列的丢失消息。有没有办法让这些消息回来处理。

1 个答案:

答案 0 :(得分:1)

丢失时无法收回消息。也许你可以尝试跟踪RMQ数据库缓存中的一些条目 - 但这只是一个疯狂的猜测/远射,我认为它不会有所帮助。

您未来需要做的是:

  • 如果您使用的是单个服务器:使队列和消息持久,并且只有在处理完消息后才明确确认(因此关闭自动ACK标志)消息。
  • 如果您正在使用RMQ节点集群(当然建议完全避免这些情况):设置队列镜像

查看RMQ persistancehigh availability.