2017-06-19 58 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。在發生故障時已準備好的消息(而不是未消息 - 因爲消費者預取都已滿)將在消息發送後進行處理。 –