消息的確認指的是接收消息的時候發生的工作,發送消息不存在確認;
消息只有在被確認之后,才認為已經被成功消費,然后消息才會從隊列或主題中刪除。
● 客戶接收消息
● 客戶處理消息
● 消息被確認
1、Session.AUTO_ACKNOWLEDGE
客戶(消費者)成功從receive方法返回時,或者從MessageListener.onMessage方法成功返回時,會話自動確認消息。
2、Session.CLIENT_ACKNOWLEDGE
客戶通過顯式調用消息的acknowledge方法確認消息。
注意:這個確認機制和事務消息有重疊,不管是哪種確認機制,只要是事務消息,那么一旦事務提交,都會進行確認,所以需要如果客戶端確認,需要改為非事務消息。
3、Session. DUPS_OK_ACKNOWLEDGE(很少用)
不是必須確認,是一種“懶散的”消息確認,消息可能會重復發送,在第二次重新傳送消息時,消息頭的JMSRedelivered會被置為true標識當前消息已經傳送過一次,客戶端需要進行消息的重復處理控制。
4、Session.SESSION_TRANSACTED
事務提交并確認。 配合事務消息的;
我們所介紹的消息接收確認機制,一律以接收者為準,與發送者沒有關系。