activeMQ学习(1)---------消息持久化服务器配置
1)官方默认的持久化为Kahadb,其配置在/usr/local/apache-activemq-5.15.0/conf/activemq.xml
1 <persistenceAdapter> 2 <kahaDB directory="${activemq.data}/kahadb" 3 </persistenceAdapter>
director:KahaDB存放的路径,默认值activemq-data
indexWriteBatchSize: 批量写入磁盘的索引page数量,默认值1000
indexCacheSize:内存中缓存索引page的数量,默认值10000
enableIndexWriteAsync:是否异步写出索引,默认false
journalMaxFileLength:设置每个消息data log的大小,默认是32MB
enableJournalDiskSyncs:设置是否保证每个没有事务的内容,被同步写入磁盘,JMS持久化的时候需要,默认为true
cleanupInterval:在检查到不再使用的消息后,在具体删除消息前的时间,默认30000
checkpointInterval:checkpoint的间隔时间,默认5000
ignoreMissingJournalfiles:是否忽略丢失的消息日志文件,默认false
checkForCorruptJournalFiles:在启动的时候,将会验证消息文件是否损坏,默认false
checksumJournalFiles:是否为每个消息日志文件提供checksum,默认false
archiveDataLogs: 是否移动文件到特定的路径,而不是删除它们,默认false
directoryArchive:定义消息已经被消费过后,移动data log到的路径,默认null
:databaseLockedWaitDelay:获得数据库锁的等待时间 (used by shared master/slave),默认10000
maxAsyncJobs:设置最大的可以存储的异步消息队列,默认值10000,可以和concurrentMessageProducers 设置成一样的值
concurrentStoreAndDispatchTransactions:是否分发消息到客户端,同时事务存储消息,默认true
concurrentStoreAndDispatchTopics:是否分发Topic消息到客户端,同时进行存储,默认true
concurrentStoreAndDispatchQueues:是否分发queue消息到客户端,同时进行存储,默认true
2)mysql的持久化配置
第一步:commons-dbcp 与mysql-connector的jar放在apache-activemq-5.15.0\lib\的目录里
第二步:在mysql数据库中创建数据库名为activemq的数据库
第三步:将官方默认的persistenceAdapter配置改为如下:
1 <persistenceAdapter> 2 <jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#ds-mysql" /> 3 </persistenceAdapter>
第四步:在<import resource="jetty.xml"/>前添加如下信息:
1 <bean id="ds-mysql" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> 2 <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 3 <property name="url" value="jdbc:mysql://localhost:3306/activemq?useUnicode=true&characterEncoding=UTF-8&relaxAutoCommit=true$amp ;useTimezone=true&serverTimezone=GMT%2B8:00&zeroDateTimeBehavior=round"/> 4 <property name="username" value="root"/> 5 <property name="password" value="XXXX"/> 6 <property name="maxTotal" value="200"/> 7 <property name="poolPreparedStatements" value="true"/> 8 </bean>
在上面的url地址配置,下面的设置可要可不要,要根据自己环境需求配置
1 useUnicode=true&characterEncoding=UTF-8&relaxAutoCommit=true$amp ;useTimezone=true&serverTimezone=GMT%2B8:00&