ActiveMQ持久化
1. 說明
使用springactivemq環境
2. ActiveMq topic持久化2.1. AMQ方式 (瞭解一下)
AMQ是一種文件存儲形式,它具有寫入速度快和容易恢復的特點。消息存儲在一個個文件中,文件的默認大小爲32M,如果一條消息的大小超過了32M,那麼這個值必須設置大一點。當一個存儲文件中的消息已經全部被消費,那麼這個文件將被標識爲可刪除,在下一個清除階段,這個文件被刪除。AMQ適用於ActiveMQ5.3之前的版本
2.2. kafadb持久到文件
KahaDB ActiveMQ 5.4默認持久化插件
2.2.1. KahaDB主要特性
A、日誌形式存儲消息;
B、消息索引以B-Tree結構存儲,可以快速更新;
B-Tree存儲結構參考:https://www.cnblogs.com/gym333/p/6877023.html
C、完全支持JMS事務;
D、支持多種恢復機制;
2.2.2. 修改activemq.xml文件
a) 位置:
b) 修改broker
c) 修改persistenceAdapter
2.2.3. 生產者配置文件
2.2.4. 消費者配置文件
消息者設置需要設置標識符clientId即接收者ID。
2.3. jdbc持久化2.3.1. 上傳jar包到activemq/lib下
2.3.2. 修改activemq.xml
其中數據庫對應的地址請修改。
2.3.3. 啓動生產者,自動創建三個表
activemq_acks:ActiveMQ的簽收信息。
用於存儲訂閱關係。如果是持久化Topic,訂閱者和服務器的訂閱關係在這個表保存。
activemq_lock:ActiveMQ的鎖信息。
這張表只有在集羣環境中才會用到
activemq_msgs:ActiveMQ的消息的信息
用於存儲消息,Topic和Queue消息都會保存在這張表中
2.4. LevelDB方式
從ActiveMQ 5.6版本之後,又推出了LevelDB的持久化引擎。
目前默認的持久化方式仍然是KahaDB,不過LevelDB持久化性能高於KahaDB,可能是以後的趨勢。
在ActiveMQ 5.9版本提供了基於LevelDB和Zookeeper的數據複製方式,用於Master-slave方式的首選數據複製方案。
2.5. 測試:
在發佈/訂閱模下,啓動兩個生產者,再啓動消費者,可實現持久化。
|