activemq

1、事務(指服務端,對客戶端不生效)服務器

消息分爲事務消息和非事務消息session

一、事務消息:建立會話Session使用transacted=truespa

connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);事務

二、非事務消息:建立會話Session使用transacted=falseci

connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);it

事務消息必須在發送和接收完消息後顯式地調用session.commit();io

事務性消息,無論設置何種消息確認模式,都會自動被確認;與設置的確認機制無關,但官方推薦事務性消息使用事務確認機制.table

 

2、確認機制(指客戶端,對服務端不生效)class

 

(1)、Session.AUTO_ACKNOWLEDGE;客戶(消費者)成功從receive方法返回時,或者從MessageListener.onMessage方法成功返回時,會話自動確認消息,而後自動刪除消息.List

(2)、Session.CLIENT_ACKNOWLEDGE;客戶經過顯式調用消息的acknowledge方法確認消息,。 即在接收端調用message.acknowledge();方法,不然,消息是不會被刪除的.

(3)、Session. DUPS_OK_ACKNOWLEDGE ;不是必須確認,是一種「懶散的」消息確認,消息可能會重複發送,在第二次從新傳送消息時,消息頭的JMSRedelivered會被置爲true標識當前消息已經傳送過一次,客戶端須要進行消息的重複處理控制。

(4)、 Session.SESSION_TRANSACTED;事務提交併確認。

 

3、消息持久化

2.8 ActiveMQ持久化消息與非持久化消息

messageProducer.setDeliveryMode(DeliveryMode. NON_PERSISTENT);//不持久化
messageProducer.setDeliveryMode(DeliveryMode.

PERSISTENT);//持久化的,固然activemq發送消息默認都是持久化的

說明:

設置完後,若是爲持久化,那麼消息在沒有被消費前都會被寫入本地磁盤kahadb文件中保存起來,即便服務器宕機,也不會影響

消息.若是是非持久化的,那麼,服務一旦宕機之類的狀況發生,消息即會被刪除.

ActiveMQ默認是持久化的.

相關文章
相關標籤/搜索