2017-06-19 5013 views
0

我有一个拥有50个消费者的队列,预取计数为100左右。所有消费者都来自单个JVM实例。所以,当应用程序关闭时,消息处于READY状态。处于就绪状态的消息数量等于(prefetch_count *消费者数量)。Rabbitmq ready和unack消息

现在的问题是,在READY状态下的消息会发生什么?它会重新递交还是会死信?

回答

0

它们将被重新递送。

如果消费者用requeue=false(并且队列配置为死文字)专门拒绝(nacks)消息,那么消息将只能是死信。

+0

谢谢加里!它什么时候会重新发货?考虑这种情况,当两个运行Java的实例每个都注册为50个消费者时,队列和预取计数大约是100.假设有一个Java实例出现故障。死实例消耗的消息处于READY状态。这些信息会发生什么?它什么时候会重新发货? – Thiru

+0

当代理检测到连接已关闭时,任何UNACKED消息都会转换回READY。在发生故障时已准备好的消息(而不是未消息 - 因为消费者预取都已满)将在消息发送后进行处理。 –