我们已经实现了延迟的消息处理,有 2 个队列和 x-dead-letter-exchange/x-message-ttl,在队列 1 中的消息超时后,它将进入队列 2。
现在是否可以设置 RabbitMQ,以便在处理来自 queue2 的消息期间我们将其作为"死信"拒绝,那么它将自动进入队列 3?我担心的是 queue2 中的消息已经被标记为"死",有没有办法区分那些因为被拒绝而失效的消息并自动将它们仅放入队列 3?
是的,该消息可能多次死信。
要查看消息为死信的原因,请查看x-death
标头,该标头是数组排序的最近优先,因此消息为死信的最新原因是第一个。
有关更多详细信息,请查看死信交换手册中的死信消息部分。
上级:
在 RabbitMQ 官方用户群中讨论过 是否可以仅在死信消息被拒绝时才移动死信消息?
:。
我担心的是:因为消息已经 TTL 的死信有没有办法将它们从队列 2 移动到队列 3 只有当他们被拒绝时?
严格回答您的问题,不:您无法选择哪些事件 到死信。
但是,我认为您真正要问的是"不会所有消息都来自 队列 2 立即对队列 3 进行死信,因为它们已经 死信一次?答案是否定的;一旦消息有 被 queue2 死信,然后它是自由球员,只会 如果它再次做一些死信的事情,就会再次死信。