二、KahaDB
KahaDB基本配置例子
<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的例子
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;
}
}
三、AMQ
<broker brokerName="broker" persistent="true" useShutdownHook="false">
<persistenceAdapter>
<amqPersistenceAdapter driectory="${activemq.base}/data" maxFileLength="32mb"/>
</persistenceAdapter>
</broker>
四、 JDBC
注意:
(1)数据库需要字符集设置为latin1。
(2)需要把mysql-connector-java.jar包放入lib中。
(3)启动成功之后会出现三张表。
二、persistence模式
消息接收者接收完成之后,数据库中的消息不会被删除。
如图所示:
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>
五、 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();
}
原文:https://blog.51cto.com/mazongfei/2415556