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

时间:2016-09-22 14:50:23

标签: rabbitmq message-queue

如果我向交换发布消息并且消息的消费者无法处理它,我可以按设定的间隔重试消息。问题是消息被发送给所有消费者而不仅仅是失败的消费者。

您如何仅向失败的消费者重新发送消息?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

如果消费者失败,那么消息将保留在队列中,您不必再次发送消息。当消费者启动并运行时,您将收到无法处理的最后一条消息。这样我们就可以解决一遍又一遍地发送消息的问题。并且您不必发送>>> key_aws = conn.create_key_pair('newkey') >>> key_aws.save(".") True >>> conn.run_instances('ami-ced887ad', key_name=key_aws.name,instance_type='t1.micro',security_group_ids=['sg-93cb39f6']) Reservation:r-07f831452bf869a14 >>> conn.run_instances('ami-ced887ad', key_name='newkey',instance_type='t1.micro',security_group_ids=['sg-93cb39f6']) Reservation:r-0476ef041ed26a52f 仅发送Nack消息,当消费者失败时,消息将在队列中。您可以在执行Ack之前获取消息并停止消费者。您将能够在队列中再次看到该消息。