pzxsheng

有种相见不敢见的伤痛,有种爱还埋藏在心中

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

原文地址:http://www.huaishao8.com/config/activemq/132.html

KahaDB

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

    <persistenceAdapter>
        
<kahaDB directory="activemq-data" journalMaxFileLength="32mb"/>
    
</persistenceAdapter>


KahaDB的属性:

property namedefault valueComments
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版本之后有效的属性:
archiveCorruptedIndex false是否归档错误的索引

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

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

<persistenceAdapter>
  
<mKahaDB directory="${activemq.base}/data/kahadb">
    
<filteredPersistenceAdapters>
      
<!-- match all queues -->
      
<filteredKahaDB queue=">">
        
<persistenceAdapter>
          
<kahaDB journalMaxFileLength="32mb"/>
        
</persistenceAdapter>
      
</filteredKahaDB>
      
      
<!-- match all destinations -->
      
<filteredKahaDB>
        
<persistenceAdapter>
          
<kahaDB enableJournalDiskSyncs="false"/>
        
</persistenceAdapter>
      
</filteredKahaDB>
    
</filteredPersistenceAdapters>
  
</mKahaDB>
 
</persistenceAdapter>

如果filteredKahaDB的perDestination属性设置为true,那么匹配的目标队列将会得到自己对应的KahaDB实例。配置如下:
<persistenceAdapter>
  
<mKahaDB directory="${activemq.base}/data/kahadb">
    
<filteredPersistenceAdapters>
      
<!-- kahaDB per destinations -->
      
<filteredKahaDB perDestination="true" >
        
<persistenceAdapter>
          
<kahaDB journalMaxFileLength="32mb" />
        
</persistenceAdapter>
      
</filteredKahaDB>
    
</filteredPersistenceAdapters>
  
</mKahaDB>
 
</persistenceAdapter>

 

posted on 2013-03-15 09:14 科菱财神 阅读(1318) 评论(0)  编辑  收藏 所属分类: ActiveMQ


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2013年3月>
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜