所以场景是1个发布者和2个消费者。该队列需要来自消费者的消息才能从队列中删除消息。
第一个消费者从队列接收消息但没有确认消息,因此消息保留在队列中。
当第二个消费者从队列中读取时,第二个消费者会收到消息吗?或者出版商是否必须等待来自第一个消费者的Nack,以便能够将该消息传递给第二个消费者?
答案 0 :(得分:1)
在收到确认(ack或nack)之前,该消息将保留在队列中,但不会传递给其他竞争消费者。
只有当发送带有requeue = true的nack时,另一个消费者才能获得它。并且无法保证它将成为消费者2.如果消费者1仍在继续,则可能会将其交付给消费者1.这取决于是否在该时间段内已经处理了其他消息。