1个发布者,2个消费者:如果我设置了一个需要ack的队列,第一个消费者不会确认,第二个消费者会收到消息吗?

时间:2017-04-18 09:15:06

标签: rabbitmq message-queue

所以场景是1个发布者和2个消费者。该队列需要来自消费者的消息才能从队列中删除消息。

第一个消费者从队列接收消息但没有确认消息,因此消息保留在队列中。

当第二个消费者从队列中读取时,第二个消费者会收到消息吗?或者出版商是否必须等待来自第一个消费者的Nack,以便能够将该消息传递给第二个消费者?

1 个答案:

答案 0 :(得分:1)

在收到确认(ack或nack)之前,该消息将保留在队列中,但不会传递给其他竞争消费者。

只有当发送带有requeue = true的nack时,另一个消费者才能获得它。并且无法保证它将成为消费者2.如果消费者1仍在继续,则可能会将其交付给消费者1.这取决于是否在该时间段内已经处理了其他消息。