RabbiMQ什么是"Ready""Unacked"类型的消息

Ani*_*mar 60 rabbitmq

我在RabbitMQ中对这两种类型的消息感到困惑.

我看到我的一些队列中有0个"Unacked"和1000个"Ready"消息,其中一些有1000个"Unacked",0个"Ready"消息.

他们之间有什么区别?

我觉得两者都是一样的.

我怎么知道消费者有多少消息被读取?

小智 92

等待处理时,消息为Ready.

当消费者连接到队列时,它会获得一批要处理的消息.该数量以预取大小给出.当这个消费者正在处理消息时,他们获得了未被打包的状态.

Unacked意味着消费者已承诺处理它们但尚未承认它们已被处理.当消费者崩溃时,队列知道当消费者上线时将再次传递哪些消息.当您有多个消费者时,消息将在其中分发.

  • 值得一提的是,即使没有任何消费者,消息也已准备好(正在等待)。“Ready”消息由 RabbitMQ 收集。“未确认”消息被消费者“触及”,但相关工作尚未确认完成。 (12认同)
  • “当消费者崩溃时,队列知道当消费者上线时要再次传递哪些消息。” 这是否意味着您需要同一个消费者来处理未确认的消息?或者它可以是新启动的消费者,例如在完全崩溃的情况下。 (6认同)

Rak*_*oni 9

在此处输入图片说明

取消确认:用于数据安全考虑。它保证到达对等方并成功处理。万一消费者在消息处理过程中丢失并且没有确认 Rabbit MQ。消息不会丢失,可供消费者再次处理。