1 个发布者,2 个消费者:如果我设置一个需要确认的队列,第一个消费者不确认,第二个消费者会收到消息吗?
1 publisher, 2 consumers: If I set a queue up that requires acks, first consumer doesn't ack, will second consumer receive message?
所以场景是 1 个发布者和 2 个消费者。队列需要来自消费者的确认才能从队列中删除消息。
第一个消费者从队列中收到消息但没有确认,因此消息留在队列中。
当第二个消费者从队列中读取时,第二个消费者会收到消息吗?还是发布者必须等待来自第一个消费者的 Nack,以便能够将该消息传递给第二个消费者?
在收到确认(ack 或 nack)之前,消息将保留在队列中,但不会传递给另一个竞争消费者。
只有当requeue=true 的nack 被发送时,另一个消费者才会收到它。并且不能保证它会是消费者2。如果消费者1还在继续,那么它可能会被送回消费者1。这取决于那个时间段内是否有其他消息被处理。
所以场景是 1 个发布者和 2 个消费者。队列需要来自消费者的确认才能从队列中删除消息。
第一个消费者从队列中收到消息但没有确认,因此消息留在队列中。
当第二个消费者从队列中读取时,第二个消费者会收到消息吗?还是发布者必须等待来自第一个消费者的 Nack,以便能够将该消息传递给第二个消费者?
在收到确认(ack 或 nack)之前,消息将保留在队列中,但不会传递给另一个竞争消费者。
只有当requeue=true 的nack 被发送时,另一个消费者才会收到它。并且不能保证它会是消费者2。如果消费者1还在继续,那么它可能会被送回消费者1。这取决于那个时间段内是否有其他消息被处理。