1、隊列和topicjava
2、KahaDBmysql
KahaDB基本配置例子sql
<persistenceAdapter> <kahaDB directory="${actlvemq.data}/kahadb"/> </persistenceAdapter>
可用的屬性有:
1:director:KahaDB存放的路徑,默認值activemq-data
2:indexWriteBatchSize:批量寫入磁盤的索引page數量,默認值1000
3:indexCacheSize:內存中緩存索引page的數量,默認值10000
4:enableIndexWriteAsync:是否異步寫出索引,默認false
5:journalMaxFi1eLength:設置每一個消息data log的大小,默認是32M
6:enab1eJournalDiskSyncs:設置是否保證每一個沒有事務的內容,被同步寫入磁盤,JMS持久化的時候須要,默認爲true
7:cleanupInterval:在檢查到再也不使用的消後,在具體刪除消息前的時間,默認30000
8:checkpointInterval:checkpoint的間隔時間,默認5000
9:ignoreMissingJournalfiles:是否忽略丟失的消息日誌文件,默認false
10:checkForCourruptJournalFiles:在啓動的時候,將會驗證消息文件是否損壞,默認爲false
11:checksumJournalFiles:是否爲每一個消息日誌文件提供checksum,默認false
12:archiveDataLogs:是否移動文件到特定的路徑,而不是刪除它們,默認false
13:directoryArchive:定義消息已經被消費後,移動data log到的路徑,默認爲null
14:databaseLockedWaitDelay:得到數據庫鎖的等待時間,默認10000
15:maxAsyncJobs:設置最大的能夠存儲的異步消息隊列,默認10000,能夠和concurrent MessageProducers設置成同樣的值
16:concurrentStoreAndDispatchTransactions:是否分發消息到客戶端,同時事務存儲消息,默認true
17:concurrentStoreAndDispatchTopics:是否分發Topic消息到客戶端,同時進行存儲,默認true
18:concurrentStoreAndDispatchQueues:是否分發queue消息到客戶端,同時進行存儲,默認true數據庫
在Java中內嵌使用Broker,使用KahaDB的例子apache
public class EmbeddedBrokerUsingKahaDBStoreExample { public BrokerService createEmbeddedBroker()throws Exception{ BrokerService broker = new BrokerService(); File dataFileDir = new File("target/amq-in-action/kahadb"); KahaDBStore kaha = new KahaDBStore(); kaha.setDirectory(dataFileDir); kaha.setJournalMaxFileLength(1024*1000); kaha.setIndexWriteBatchSize(100); kaha.setEnableIndexWriteAsync(true); broker.setPersistenceAdapter(kaha); broker.addConnector("tcp://localhost:61616"); broker.start(); return broker; } }
3、AMQ緩存
<broker brokerName="broker" persistent="true" useShutdownHook="false"> <persistenceAdapter> <amqPersistenceAdapter driectory="${activemq.base}/data" maxFileLength="32mb"/> </persistenceAdapter> </broker>
4、 JDBC異步
注意:
(1)數據庫須要字符集設置爲latin1。
(2)須要把mysql-connector-java.jar包放入lib中。
(3)啓動成功以後會出現三張表。tcp
2、persistence模式
消息接收者接收完成以後,數據庫中的消息不會被刪除。
如圖所示:
ide
JDBC Message Store with ActiveMQ Journal(日誌)
這種方式克服了JDBC Store的不足,使用快速的緩存寫入技術,大大提升了性能。配置示例以下:性能
<beans> <broker brokerName="test-broker" xmlns="http://activemq.apache.org/schema/core"> <persistenceFactory> <journalPersistenceAdapterFactory journalLogFiles="4" journalLogFileSize="32768" useJournal="true" useQuickJournal="true" dataSource="#derby-ds" dataDirectory="activemq-data"/> </persistenceFactory> </broker> </beans>
5、 MMS
<beans> <broker brokerName="test-broker" persistent="false" xmlns="http://activemq.apache.org/schema/core"> <transportConnectors uri="tcp://localhost:61616"/> </transportConnectors> </broker> </beans>
public void createEmbeddedBroker()throws Exception{ BrokerService broker = new BrokerService(); broker.setPersistent(false); broker.addConnector("tcp://localhost:61616"); broker.start(); }