java—当DefaultRequereEjected设置为true时,限制rabbitmq队列头中的重试次数

jvidinwx  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(234)

我有一个应用程序,其中消息由多节点侦听器使用。我遇到的问题是,一旦使用者无法处理任何消息,我必须限制rabbitmq执行的重试次数。我发现有一种方法可以将此消息死信到dlq,并在死信时为失败的消息设置ttl,一旦ttl设置完毕,它就可以通过在原始死信队列中将consumer/worker queue设置为dlq来回迁到consumer/worker queue。然而,问题是,保持事件作为事件序列处理的顺序是一个重要方面。如果我死信一条消息,并推迟重试的事件序列将不匹配,从而导致数据损坏的问题。
例如:有一条消息用于创建订单,然后有另一条消息用于更新订单。现在,在处理create order消息时,它以某种方式失败,并被发送到dlq,并且处理下一条update order消息,update order事件将失败,因为它将无法找到实际的订单。
因此,我们在这里需要的是,如果一条消息未能在使用者处处理,则应在队列头尝试,直到rabbitmq尝试“n”次,如果它仍然失败,则我们打开断路器,该断路器将停止将要推送到队列的进一步事件,直到该失败消息得到处理或根据ttl的策略被丢弃。
任何帮助都将不胜感激。提前谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题