RabbitMQ:死信的消息会再次消失吗?

时间:2014-11-13 00:31:24

标签: rabbitmq message-queue dead-letter

我们已经使用2个队列和x-dead-letter-exchange / x-message-ttl实现了延迟消息处理,其中在queue1中的消息超时后,它将转到queue2。

现在可以设置RabbitMQ,以便在处理来自queue2的消息时我们将其拒绝为“死信”,那么它会自动转到queue3吗? 我担心的是,队列2中的消息已被标记为“已死”,有没有办法区分那些因为被拒绝而自动将它们放到队列3中而死亡的消息?

1 个答案:

答案 0 :(得分:3)

是的,该消息有可能多次出现死信。

要查看为什么消息是死信的原因,请查看x-death标头,这是最近排序的数组,因此消息是死信的最新原因是第一个。

有关详细信息,请查看Dead-Lettered Messages section in Dead Letter Exchanges manual

<强> UPD:

在RabbitMQ官方用户组中讨论Is it possible to to move dead-lettered message only if it was rejected?

  

...

     
    

我关注的是:因为已经发送了消息     TTL死信是否有任何方法从Queue2移动到Queue3     只有拒绝

  
     

要严格回答您的问题,否:您无法选择哪些活动   死信

     

然而,我认为你真正要求的是“不会发出所有信息   queue2因为已经存在,所以会立即将死信写入queue3   死了一次吗?“而答案就是这样;一旦有了消息   已被命名为queue2,它是一个自由球员,只会是   如果它再次出现了可以让人遗忘的东西,那就再说一次。