2

背景

我们使用 Langohr(版本 3.4.0)使用来自 RabbitMQ 的消息,并尝试将它们持久化到 MongoDB 中。我们没有使用auto-ack,因为如果我们无法将消息持久保存在 MongoDB 中,我们希望稍后能够重试。我们正在使用ack-unless-exception 函数来适应这种情况。今晚 MongoDB 发生了临时中断,并在短时间内停机,在此期间,有 40 条消息无法持久化,因此保留在 RabbitMQ 队列中。但是当 MongoDB 再次启动时,我们的 Langohr 处理程序刚刚收到新消息。在我们重新启动我们的应用程序之前,旧的并没有交付给我们。

问题

我们怎样才能让 RabbitMQ 用 Langohr 重新传递以前的 nack:ed 消息,而不必重新启动我们的应用程序?

4

1 回答 1

1

未送达的邮件不会自动重新送达。你想看看 恢复。此方法将向 RabbitMQ 发出信号,该信号必须重新传递未处理的消息。当你这样做取决于你的架构

于 2015-11-11T12:24:05.237 回答