我想了解JMS中的確認模式是如何工作的。我正在閱讀這個源文件,它讓我非常困惑,因爲它與Spring的文檔所說的相矛盾。AUTO_ACKNOWLEDGEMENT模式與使用和不使用Spring JMS之間的區別
來源說一兩件事: 從http://www.javaworld.com/article/2074123/java-web-development/transaction-and-redelivery-in-jms.html
當它成功地從接收()方法返回的消息被自動確認。如果接收方使用MessageListener接口,則消息在從onMessage()方法成功返回時會自動確認。如果在執行receive()方法或onMessage()方法時發生故障,則會自動重新發送消息。
從http://www2.sys-con.com/itsg/virtualcd/Java/archives/0604/chappell/index.html
隨着AUTO_ACKNOWLEDGE模式的確認總是在onMessage()處理程序返回後隱含發生的事。通過在消費會話中指定CLIENT_ACKNOWLEDGE模式,接收消息的客戶端可以更好地控制保證消息的傳遞。
監聽器容器提供了以下消息確認選項:
「SessionAcknowledgeMode來」 設置爲 「AUTO_ACKNOWLEDGE」(默認):自動聽衆執行前的消息確認;在拋出異常情況下無法重新投遞。 「sessionAcknowledgeMode」設置爲「CLIENT_ACKNOWLEDGE」:成功偵聽器執行後自動確認消息;在拋出異常情況下無法重新投遞。 「sessionAcknowledgeMode」設置爲「DUPS_OK_ACKNOWLEDGE」:偵聽器執行期間或之後的惰性消息確認;在拋出異常的情況下可能的重新傳遞。 「sessionTransacted」設置爲「true」:成功偵聽器執行後的事務性確認;保證在發生異常情況下的重新投遞。
我想知道的是,爲什麼這些消息來源說不同的東西?如果一切都是真的,那麼我怎麼知道我的消息將如何/何時被確認?
感謝您的澄清,加里。 – xabhi 2015-02-12 07:24:42