ActiveMQ详细笔记 下载本文

Java 1 2

AMQ的属性:

属性名称

默认值 描述

active

directory mq-dat消息文件和日志的存储目录

a

useNIO true 使用NIO协议存储消息

syncOnWrite false 同步写到磁盘,这个选项对性能影响非常大 maxFileLeng

32mb 一个消息文件的大小

th

persistentI

true 消息索引的持久化,如果为false,那么索引保存在内存中

ndex

maxCheckpoi

ntMessageAd4kb 一个事务允许的最大消息量 dSize

cleanupInte

30000 清除操作周期,单位ms

rval

索引文件缓存页面数,缺省为1024,当amq扩充或者缩减存储时,会锁定整个

indexBinSiz

1024 broker,导致一定时间的阻塞,所以这个值应该调整到比较大,但是代码中实

e

现会动态伸缩,调整效果并不理想。

indexKeySiz

96 索引key的大小,key是消息ID

e

indexPageSi

16kb 索引的页大小

ze

directoryArarchiv

存储被归档的消息文件目录

chive e archiveData

false 当为true时,归档的消息文件被移到directoryArchive,而不是直接删除

Logs

2、KahaDB

KahaDB是基于文件的本地数据库储存形式,虽然没有AMQ的速度快,但是它具有强扩展性,恢复的时间比AMQ短,从5.4版本之后KahaDB做为默认的持久化方式。默认配置如下: Java 1 2

KahaDB的属性:

default va

Comments

lue

activemq-d

directory 消息文件和日志的存储目录

ata

一批索引的大小,当要更新的索引量到达这个值时,更新

indexWriteBatchSize 1000

到消息文件中

indexCacheSize 10000 内存中,索引的页大小 enableIndexWriteAsync false 索引是否异步写到消息文件中 journalMaxFileLength 32mb 一个消息文件的大小 enableJournalDiskSyncs true 是否讲非事务的消息同步写入到磁盘 cleanupInterval 30000 清除操作周期,单位ms checkpointInterval 5000 索引写入到消息文件的周期,单位ms

忽略丢失的消息文件,false,当丢失了消息文件,启动异

ignoreMissingJournalfiles false

常

checkForCorruptJournalFil

false 检查消息文件是否损坏,true,检查发现损坏会尝试修复

es

checksumJournalFiles false 产生一个checksum,以便能够检测journal文件是否损坏。 5.4版本之后有效的属性:

当为true时,归档的消息文件被移到directoryArchive,

archiveDataLogs false

而不是直接删除

directoryArchive null 存储被归档的消息文件目录 databaseLockedWaitDelay 10000 在使用负载时,等待获得文件锁的延迟时间,单位ms maxAsyncJobs 10000 同个生产者产生等待写入的异步消息最大量 concurrentStoreAndDispatc

false 当写入消息的时候,是否转发主题消息

hTopics

concurrentStoreAndDispatc

true 当写入消息的时候,是否转发队列消息

hQueues property name

5.6版本之后有效的属性: archiveCorruptedIndex false

是否归档错误的索引 从5.6版本之后,有可能发布通过多个kahadb持久适配器来实现分布式目标队列存储。什么时候用呢?如果有一个快速的生产者和消费者,当某一个时刻生产者发生了不规范的消费,那么有可能产生一条消息被存储在两个消息文件中,同时,有些目标队列是危险的并且要求访问磁盘。在这种情况下,你应该用通配符来使用mKahaDB。如果目标队列是分布的,事务是可以跨越多个消息文件的。 每个KahaDB的实例都可以配置单独的适配器,如果没有目标队列提交给filteredKahaDB,那么意味着对所有的队列有效。如果一个队列没有对应的适配器,那么将会抛出一个异常。配置如下: Java 1 2 4 5

7 9 10 11 12 13 14 16 17 18 19

如果filteredKahaDB的perDestination属性设置为true,那么匹配的目标队列将会得到自己对应的KahaDB实例。配置如下: Java 1 2

4

5

7 9 10 11 12 3、JDBC 配置JDBC适配器: Java 1

alse\3

dataSource指定持久化数据库的bean,createTablesOnStartup是否在启动的时候创建数据表,默认值是true,这样每次启动都会去创建数据表了,一般是第一次启动的时候设置为true,之后改成false。

MYSQL持久化bean