【问题标题】: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 个消费者:如果我设置了一个需要确认的队列,第一个消费者不确认,第二个消费者会收到消息吗?
【发布时间】:2017-04-18 17:38:04
【问题描述】:

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

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

当第二个消费者从队列中读取时,第二个消费者会收到消息吗?还是发布者必须等待来自第一个消费者的 Nack,才能将该消息传递给第二个消费者?

【问题讨论】:

    标签: rabbitmq message-queue


    【解决方案1】:

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

    只有当一个带有 requeue=true 的 nack 被发送时,另一个消费者才会得到它。并且不能保证它会是消费者 2。如果消费者 1 仍在运行,那么它可能会被传递回消费者 1。这取决于在该时间段内是否有其他消息已处理。

    【讨论】:

      猜你喜欢
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      相关资源
      最近更新 更多