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(); }