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