在RabbitMQ工作队列中返回NACKed请求

时间:2015-12-21 14:54:25

标签: rabbitmq distributed fault-tolerance

我正在尝试使用RabbitMQ实现工作队列架构。我有一个发件人应用程序和多个消费者。

我对消费者使用手动确认,因此如果处理请求失败,它将被重新排队等待另一个消费者处理。

我想知道如果所有消费者在特定请求中返回nack会发生什么。有没有办法识别这种行为并将请求标记为“死”,以便将其重新路由到死信交换?在这种情况下,我希望在绑定到死信交换的队列上打开一个单独的消费者,并接收任何消费者无法处理的所有消息(用于记录目的或在本地执行此请求的任务,而不是分发消费者)。

我有另一个问题。当从消费者接收到NACK时重新排队请求时,它是否会尝试将此请求发送给其他消费者,或者它是否会尝试发送给第一个可用的请求,即使它已经是那个已经收到请求的消息?

由于

1 个答案:

答案 0 :(得分:2)

  1. RabbitMQ中没有这样的功能。您可以处理异常,并且对于特定异常发送消息到死队列,或者如果知道消息必须存在的最长时间,则在队列上配置TTL。
  2. 如果您没有留言,则会转到下一个可用消费者