Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用rabbitMQ,我使用basic_get从队列中获取每条消息,而没有自动确认过程,这意味着消息保留在队列中,直到我确认或确认消息。
有时我的消息由于引发了一些异常而无法处理,这阻止了它们被完全处理。
在这些情况下,我想再试一次,让我们立即说两次,如果我仍然无法处理它们 - 我想在一小时内再试 3 次,如果一切都失败了,那么我想取消消息并将其从队列中永久删除。
问题是rabbitMQ中是否有任何机制为我提供消息重试(也计算重试次数),以及选择何时启动重试的能力——某种延迟机制?
您应该为此使用多个队列。
我有一个类似的问题,我处理该问题的方式是将遇到问题的消息移动到另一个队列中。
如果您抛出异常,则捕获它,确认消息并将其移动到例如error_queue_1。您可以设置第二个侦听器(使用不同的计时器),该侦听器将处理 error_queue_1。
您可以根据需要多次重复该过程。
这还可以让您了解有多少消息有问题,哪一条消息等。