1. 程式人生 > >ActiveMQ 消息存儲持久化

ActiveMQ 消息存儲持久化

rod mis activemq 索引 內容 enable 文件的 tro dispatch

ActiveMQ提供了一個插件式的消息存儲,類似於消息的多點傳播,主要實現了如下幾種:

  • AMQ消息存儲-基於文件的存儲方式,是以前的默認消息存儲
  • KahaDB消息存儲-提供了容量的提升和恢復能力,是現在的默認存儲方式
  • JDBC消息存儲-消息基於JDBC存儲的
  • Memory 消息存儲-基於內存的消息存儲

KahaDB Message Store

  KahaDB是目前默認的存儲方式,可用於任何場景,提高了性能和恢復能力。消息存儲使用一個事
務日誌和僅僅用一個索引文件來存儲它所有的地址。
  KahaDB是一個專門針對消息持久化的解決方案,它對典型的消息使用模式進行了優化。在Kaha
中,數據被追加到data logs中。當不再需要log文件中的數據的時候,log文件會被丟棄。

基本配置例子

<persistenceAdapter>
            <kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>

可用的屬性有

1:director:KahaDB存放的路徑,默認值activemq-data
2:indexWriteBatchSize: 批量寫入磁盤的索引page數量,默認值1000
3:indexCacheSize:內存中緩存索引page的數量,默認值10000
4:enableIndexWriteAsync:是否異步寫出索引,默認false
5:journalMaxFileLength:設置每個消息data log的大小,默認是32MB
6:enableJournalDiskSyncs:設置是否保證每個沒有事務的內容,被同步寫入磁盤,JMS持久化的時候需
要,默認為true
7:cleanupInterval:在檢查到不再使用的消息後,在具體刪除消息前的時間,默認30000

8:checkpointInterval:checkpoint的間隔時間,默認5000
9:ignoreMissingJournalfiles:是否忽略丟失的消息日誌文件,默認false
10:checkForCorruptJournalFiles:在啟動的時候,將會驗證消息文件是否損壞,默認false
11:checksumJournalFiles:是否為每個消息日誌文件提供checksum,默認false
12:archiveDataLogs: 是否移動文件到特定的路徑,而不是刪除它們,默認false
13:directoryArchive:定義消息已經被消費過後,移動data log到的路徑,默認null
14:databaseLockedWaitDelay:獲得數據庫鎖的等待時間 (used by shared master/slave),默認
10000
15:maxAsyncJobs:設置最大的可以存儲的異步消息隊列,默認值10000,可以和concurrent
MessageProducers 設置成一樣的值
16:concurrentStoreAndDispatchTransactions:是否分發消息到客戶端,同時事務存儲消息,默認
true
17:concurrentStoreAndDispatchTopics:是否分發Topic消息到客戶端,同時進行存儲,默認true
18:concurrentStoreAndDispatchQueues:是否分發queue消息到客戶端,同時進行存儲,默認true

ActiveMQ 消息存儲持久化