ActiveMQ消息持久化
一、不使用持久化
<broker persistent=
"false"
>
</broker>
那麼activemq 會自動使用 記憶體儲存消息,使用 org.apache.activemq.store.memory.MemoryPersistenceAdapter 來儲存
二、消息資料災難恢複
http://activemq.apache.org/replicated-message-store.html 推薦使用Master/Slave
三、持久化
(1)、 Configuring Kaha Persistence,一種格式化消息到檔案的引擎,目前ActiveMQ預設的消息持久化引擎。
5.0之前還有一種消息持久化引擎AMQ,但是已經廢棄了,推薦使用Kaha。
Kaha Peristence 是一個消息持久化到檔案的存儲解決引擎,也是ActiveMQ項目的一部分。 提供最優性能進行調優的典型消息使用模式,其中包括寫/讀和丢棄的消息很快被儲存。 資料存儲在Kaha附加到資料日志,一旦資料不在有用處,日志檔案會丢棄那部分資料。 ActiveMQ 5.0 and above:
|
(2)、LevelDB Persistence ,這種檔案系統是從ActiveMQ5.8之後引進的,它和KahaDB非常相似,也是基于檔案的本地資料庫儲存形式,但是它提供比KahaDB更快的持久性。與KahaDB不同的是,它不是使用傳統的B-樹來實作對日志資料的提前寫,而是使用基于索引的LevelDB。
< persistenceAdapter > < levelDBdirectory = "activemq-data" /> </ persistenceAdapter > |
(3)、使用JDBC持久化到資料庫
|
注:my-ds 資料庫要預先定義好 (4)、 Replicated LevelDB Store 在ActiveMQ 5.9中,複制并且存儲。 它使用Apache zookeeper 從一組代理節點中配置(全部相同的配置),選擇一個作為主節點并且存儲消息,然後同步所有的其他子節點,讓其他子節點更新通過複制到主節點的所有更新。 直白點:zookeeper+ActiveMQ叢集,防止單節點挂機。
<persistenceAdapter> <replicatedLevelDB directory="${activemq.data}" replicas="2" bind="tcp://0.0.0.0:61619" zkAddress="127.0.0.1:2181" zkPassword="password" zkPath="/activemq/leveldb-stores" /> </persistenceAdapter> |
一圖勝千言:

推薦使用此方式做為生産中配置。 參考的資料: http://activemq.apache.org/persistence.html http://activemq.apache.org/replicated-leveldb-store.html http://my.oschina.net/u/1455908/blog/310115