2013-03-13 84 views
-1

假設我有幾個連接到相同隊列的消費者。來自一個ActiveMQ隊列的幾個消費者

我的業務邏輯是:從隊列中取一條消息,執行一些邏輯操作,如果該操作成功,則確認此消息(作爲客戶端確認)。

我的問題是,如果其中一個消費者邏輯失敗並且不返回對該消息的確認會發生什麼情況。

當消息仍在被消費者處理時,是否有將此消息發送給其他消費者的風險?

是否有某種超時之後,線程將此消息釋放回隊列?

回答

3

消息以循環方式分派給消費者以排隊消費者。如果消費者失敗並且它在Broker處理的消息沒有被確認,那麼一旦Broker檢測到消費者連接失敗,它就會將消息放回到隊列中,使其可以由另一個連接的消費者處理。

也可以爲一個消息配置一組設置的最大重新傳送次數,以便在某個點後它將被放置在死信隊列中。

相關問題