1.2.4 ActiveMQ持久化原理及事务机制

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
发布了47 篇原创文章 · 获赞 15 · 访问量 7941

猜你喜欢

转载自blog.csdn.net/weixin_43871142/article/details/104859887