ActiveMQ使用笔记(二)ActiveMQ消息持久化(2)

2、KahaDB

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

KahaDB的属性:

property name default value Comments
directoryactivemq-data消息文件和日志的存储目录
indexWriteBatchSize1000一批索引的大小,当要更新的索引量到达这个值时,更新到消息文件中
indexCacheSize10000内存中,索引的页大小
enableIndexWriteAsyncfalse索引是否异步写到消息文件中
journalMaxFileLength32mb一个消息文件的大小
enableJournalDiskSyncstrue是否讲非事务的消息同步写入到磁盘
cleanupInterval30000清除操作周期,单位ms
checkpointInterval5000索引写入到消息文件的周期,单位ms
ignoreMissingJournalfilesfalse忽略丢失的消息文件,false,当丢失了消息文件,启动异常
checkForCorruptJournalFilesfalse检查消息文件是否损坏,true,检查发现损坏会尝试修复
checksumJournalFilesfalse产生一个checksum,以便能够检测journal文件是否损坏。
5.4版本之后有效的属性:

archiveDataLogsfalse当为true时,归档的消息文件被移到directoryArchive,而不是直接删除
directoryArchivenull存储被归档的消息文件目录
databaseLockedWaitDelay10000在使用负载时,等待获得文件锁的延迟时间,单位ms
maxAsyncJobs10000同个生产者产生等待写入的异步消息最大量
concurrentStoreAndDispatchTopicsfalse当写入消息的时候,是否转发主题消息
concurrentStoreAndDispatchQueuestrue当写入消息的时候,是否转发队列消息
5.6版本之后有效的属性:

archiveCorruptedIndexfalse是否归档错误的索引

从5.6版本之后,有可能发布通过多个kahadb持久适配器来实现分布式目标队列存储。什么时候用呢?如果有一个快速的生产者和消费者,当某一个 时刻生产者发生了不规范的消费,那么有可能产生一条消息被存储在两个消息文件中,同时,有些目标队列是危险的并且要求访问磁盘。在这种情况下,你应该用通 配符来使用mKahaDB。如果目标队列是分布的,事务是可以跨越多个消息文件的。

每个KahaDB的实例都可以配置单独的适配器,如果没有目标队列提交给filteredKahaDB,那么意味着对所有的队列有效。如果一个队列没有对应的适配器,那么将会抛出一个异常。配置如下:

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

转http://www.huaishao8.com/config/activemq/132.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值