5.2KahaDB消息仓库

从ActiveMQ版本5.3起,对于一般用途的消息,建议使用KahaDB作为消息仓库。这是一个基于文件的消息仓库,它结合了事务性日报,提高了可靠的消息存储和恢复,具有良好的性能和可扩展性。 KahaDB是被调整和设计为快速的消息存储的基于文件的事务性仓库。KahaDB仓库的目标是易用和尽量快。它的基于文件消息数据库的使用意味着没有第三方数据库的先决条件。这个消息仓库使ActiveMQ能被很快下载和运行。除此之外,KahaDB仓库的结构已为消息代理的需要特意改进了。 KahaDB消息仓库为它的索引使用事务性日志并为它的所有目标使用一个索引文件。它已被用到有10000个活跃连接的产品环境,每个连接有个单独的队列。KahaDB仓库的可配置性意味着它能被调整为大多数的使用场景,从高生产能力的应用(例如交易平台),到存储大量的消息(例如,GPS追踪)。 为了为ActiveMQ启用KahaDB仓库,你需要在activemq.xml中配置元素。这里有一个KahaDB消息仓库的最小限度配置:

<broker brokerName="broker" persistent="true" useShutdownHook="false">

...

<persistenceAdapter>

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

</persistenceAdapter>

...

</broker>

 如果你想要在一个应用中嵌入ActiveMQ代理,消息仓库也可编程配置。这里有一个KahaDB的编程配置:

 

public class EmbeddedBrokerUsingAMQStoreExample {
	BrokerService createEmbeddedBroker() throws Exception {
		BrokerService broker = new BrokerService();
		File dataFileDir = new File("target/amq-in-action/kahadb");
		KahaDBStore kaha = new KahaDBStore();
		kaha.setDirectory(dataFileDir);
		// Using a bigger journal file
		kaha.setJournalMaxFileLength(1024 * 100);
		// small batch means more frequent and smaller writes
		kaha.setIndexWriteBatchSize(100);
		// do the index write in a separate thread
		kaha.setEnableIndexWriteAsync(true);
		broker.setPersistenceAdapter(kaha);
		// create a transport connector
		broker.addConnector("tcp://localhost:61616");
		// start the broker
		broker.start();
		return broker;
	}
}
 

 

虽然这个例子看起来很小,但它足够使用KahaDB消息仓库创建ActiveMQ代理并在TCP上监听ActiveMQ客户端连接。更多关于嵌入式ActiveMQ的信息,请看第8章。 为了更好地理解和配置,调查KahaDB消息仓库的内部构件是重要的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值