ActiveMQ持久化方案介绍
ActiveMQ 的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。
ActiveMQ持久化机制
Queue类型的持久化机制
Topic类型的持久化机制
JDBC 方式
将消息存储到数据库
中,例如:Mysql、SQLServer、Oracle、DB2等
优点 | 缺点 |
---|---|
方便管理 | 性能低 |
可以支持强一致性 | / |
AMQ 方式
基于文件的存储方式,它具有写入速度快和容易恢复的特点
,但是由于其重建索引时间过长,而且索引文件占用磁盘空间过大,所以已经不推荐使用。
优点 | 缺点 |
---|---|
性能高于JDBC | 索引占用磁盘空间量大 |
/ | 重建索引速度非常慢 |
KahaDB 方式
从 ActiveMQ 5.4开始默认的持久化方式,KahaDB恢复时间远远小于其前身AMQ并且使用更少的数据文件,所以可以完全替代AMQ。
LevelDB 方式
LevelDB 是Google 开发的一套用于持久化数据的高性能类库。LevelDB并不是一种服务,用户需要自行实现Server。是单进程的服务,能够处理十亿级别规模Key-Value型数据,占用内存小。
LevelDB 的特点
基于K V存储
Key值有序存储
操作接口简单
支持数据快照
支持数据压缩
LevelDB 的结构
ActiveMQ 配置LevelDB
修改配置文件${ACTIVEMQ_HOME}/conf/activemq.xml
<persistenceAdapter>
<levelDB directory="${activemq.data}/activemq-data"/>
</persistenceAdapter>
事务机制
ActiveMQ事务实现机制
ActiveMQ开启事物
事务机制官方文档
http://activemq.apache.org/should-i-use-transactions.html
http://activemq.apache.org/how-do-transactions-work.html
http://activemq.apache.org/should-i-use-xa.html
消费者功能官方文档
异步分发 http://activemq.apache.org/consumer-dispatch-async.html
独占消费 http://activemq.apache.org/exclusive-consumer.html
优先级消费 http://activemq.apache.org/consumer-priority.html
持久订阅者 http://activemq.apache.org/manage-durable-subscribers.html
消费分组 http://activemq.apache.org/message-groups.html
消息重发 http://activemq.apache.org/redelivery-policy.html
消息追溯 http://activemq.apache.org/retroactive-consumer.html
消息过滤 http://activemq.apache.org/selectors.html
慢消费者处理 http://activemq.apache.org/slow-consumer-handling.html
订阅恢复策略 http://activemq.apache.org/subscription-recovery-policy.html