RabbitMQ 仅向失败的消费者重新发送消息

RabbitMQ resend message to failed consumer only

如果我向交换器发布了一条消息,而消息的使用者无法处理它,我可以在设定的时间间隔内重试该消息。问题是消息被发送给所有消费者,而不仅仅是失败的消费者。

如何只向失败的消费者重发消息?

假设您有和交换绑定到更多队列

exchange ---> queue1 ---> consumer 1 
        |---> queue2 ---> consumer 2
        |---> queue3 ---> consumer 3 

如果一个消费者失败,则无需重新发送消息,消息会存储到队列中。这是队列的范围

如果消费者失败,那么消息将留在队列中,您不必再次发送。当消费者启动并且 运行 您将收到它未能处理的最后一条消息。这样我们就解决了一遍又一遍地发送消息的问题。而且您不必发送 Nack 只是不 Ack 消息,当消费者失败时消息将在队列中。您可以通过获取消息并在执行 Ack 之前停止消费者来尝试。您将能够在队列中再次看到该消息。