如何使用Langohr在RabbitMQ中重新传送排队的消息?

时间:2015-11-11 07:34:27

标签: clojure rabbitmq amqp langohr

背景

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

问题

如何让RabbitMQ重新使用Langohr以前的nack:ed消息而不必重启我们的应用程序?

1 个答案:

答案 0 :(得分:1)

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