环境:MAC OS X 10.11.5 + ActiveMQ 5.13.3
默认情况下,某个 KahaDB 文件存储了所有 Queue 的未处理消息。
实际使用中,有些 Queue 的消费速度快,有些 Queue 的消费速度慢,这样不利于 KahaDB 文件的清除。
在这种情况下,可以使用 mKahaDB,为每一个 Queue 配置一个 KahaDB 实例。
1. 修改 activemq.xml 中的 persistenceAdapter 部分
<persistenceAdapter>
<!--<kahaDB directory="/tmp/kahadb"/>-->
<mKahaDB directory="${activemq.base}/data/kahadb">
<filteredPersistenceAdapters>
<!-- kahaDB per destinations -->
<filteredKahaDB perDestination="true">
<persistenceAdapter>
<kahaDB journalMaxFileLength="32mb"/>
</persistenceAdapter>
</filteredKahaDB>
</filteredPersistenceAdapters>
</mKahaDB>
</persistenceAdapter>
2. 启动 ActiveMQ
./activemq-node3/bin/activemq console xbean:activemq-node3-master-slave.xml
3. 分别向 testQueue1 和 testQueue2 发送消息
(1)向 testQueue1 发送消息
./activemq-node3/bin/activemq producer --brokerUrl tcp://localhost:61619 --user admin --password admin --destination queue://testQueue1 --messageSize 1024 --messageCount 1000 --parallelThreads 10
(2)向 testQueue2 发送消息
./activemq-node3/bin/activemq producer --brokerUrl tcp://localhost:61619 --user admin --password admin --destination queue://testQueue2 --messageSize 1024 --messageCount 1000 --parallelThreads 10
4. 查看 KahaDB 目录
发现在 /data/kahadb/ 目录下,生成了 queue#3a#2f#2ftestQueue1 和
queue#3a#2f#2ftestQueue2 目录。
在这两个目录下,分别有 testQueue1 和 testQueue2 的 db-1.log、db.data、db.redo 文件。
说明每个 Queue 的持久化 KahaDB 文件是各自独立分开存储的。
参考文献:
1. http://blog.garytully.com/2011/11/activemq-multiple-kahadb-instances.html
2. https://access.redhat.com/documentation/en-US/Fuse_MQ_Enterprise/7.1/html/Configuring_Broker_Persistence/files/FuseMBMultiKahaDB.html
默认情况下,某个 KahaDB 文件存储了所有 Queue 的未处理消息。
实际使用中,有些 Queue 的消费速度快,有些 Queue 的消费速度慢,这样不利于 KahaDB 文件的清除。
在这种情况下,可以使用 mKahaDB,为每一个 Queue 配置一个 KahaDB 实例。
1. 修改 activemq.xml 中的 persistenceAdapter 部分
<persistenceAdapter>
<!--<kahaDB directory="/tmp/kahadb"/>-->
<mKahaDB directory="${activemq.base}/data/kahadb">
<filteredPersistenceAdapters>
<!-- kahaDB per destinations -->
<filteredKahaDB perDestination="true">
<persistenceAdapter>
<kahaDB journalMaxFileLength="32mb"/>
</persistenceAdapter>
</filteredKahaDB>
</filteredPersistenceAdapters>
</mKahaDB>
</persistenceAdapter>
2. 启动 ActiveMQ
./activemq-node3/bin/activemq console xbean:activemq-node3-master-slave.xml
3. 分别向 testQueue1 和 testQueue2 发送消息
(1)向 testQueue1 发送消息
./activemq-node3/bin/activemq producer --brokerUrl tcp://localhost:61619 --user admin --password admin --destination queue://testQueue1 --messageSize 1024 --messageCount 1000 --parallelThreads 10
(2)向 testQueue2 发送消息
./activemq-node3/bin/activemq producer --brokerUrl tcp://localhost:61619 --user admin --password admin --destination queue://testQueue2 --messageSize 1024 --messageCount 1000 --parallelThreads 10
4. 查看 KahaDB 目录
发现在 /data/kahadb/ 目录下,生成了 queue#3a#2f#2ftestQueue1 和
queue#3a#2f#2ftestQueue2 目录。
在这两个目录下,分别有 testQueue1 和 testQueue2 的 db-1.log、db.data、db.redo 文件。
说明每个 Queue 的持久化 KahaDB 文件是各自独立分开存储的。
参考文献:
1. http://blog.garytully.com/2011/11/activemq-multiple-kahadb-instances.html
2. https://access.redhat.com/documentation/en-US/Fuse_MQ_Enterprise/7.1/html/Configuring_Broker_Persistence/files/FuseMBMultiKahaDB.html
1 条评论:
java编程示例代码
java编程中的缩放图像
发表评论