0

我正在使用rabbitMQ,我使用basic_get从队列中获取每条消息,而没有自动确认过程,这意味着消息保留在队列中,直到我确认或确认消息。

有时我的消息由于引发了一些异常而无法处理,这阻止了它们被完全处理。

在这些情况下,我想再试一次,让我们立即说两次,如果我仍然无法处理它们 - 我想在一小时内再试 3 次,如果一切都失败了,那么我想取消消息并将其从队列中永久删除。

问题是rabbitMQ中是否有任何机制为我提供消息重试(也计算重试次数),以及选择何时启动重试的能力——某种延迟机制?

4

1 回答 1

1

您应该为此使用多个队列。

我有一个类似的问题,我处理该问题的方式是将遇到问题的消息移动到另一个队列中。

如果您抛出异常,则捕获它,确认消息并将其移动到例如error_queue_1。您可以设置第二个侦听器(使用不同的计时器),该侦听器将处理 error_queue_1。

您可以根据需要多次重复该过程。

这还可以让您了解有多少消息有问题,哪一条消息等。

于 2015-03-01T12:16:49.120 回答