前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ActiveMQ学习之消息存储和可持久化

ActiveMQ学习之消息存储和可持久化

作者头像
用户5899361
发布2020-12-07 15:15:18
7480
发布2020-12-07 15:15:18
举报
文章被收录于专栏:学习java的小白

一、activeMQ高可用

1、事物

2、签收

3、持久

4、可持久化

二、持久化机制

为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制

ActiveMQ持久化机制有:JDBC、AMQ、KahaDB和LevelDB,无论哪种持久化方式,消息的存储逻辑都是一致的。

就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等再试图将消息发送给接收者,成功则将消息从内存中删除,失败则继续尝试发送。

消息中心启动后首先要检查指定位置,如果有未发送成功的消息,则需要把消息发送出去。

三、消息持久化机制有哪些

1、AMQ Message Store : 基于文件存储方式,以前默认的消息存储方式,现在基本不用。AMQ是一种文件存储形式,它具有写入速度快和容易恢复的特点。消息存储在一个一个文件当中,文件默认大小为32M,当一个存储文件被全部消费,那么这个文件会被标识为可删除,在下一个清除阶段被删除

2、KahaDB消息存储:

基于日志文件,从5.4版本之后开始默认支持持久化插件,可适用于任何场景,提高了性能和恢复能力。消息存储使用一个事务日志和仅用一个索引文件来存储他所有的地址。KahaDB是一个专门针对消息持久化的解决方案,他对典型的消息使用模式进行优化。数据被追加到data logs中。当不在需要log文件中数据时,log文件会被丢弃。

配置:1、进入到ActiveMQ安装目录下的conf文件夹下

2、编辑activemq.xml,在这里我们可以看到默认的存储方式就是KahaDB

kahadb文件组成:

1、进入到安装目录下data文件夹中,可以看到有个kahadb文件夹

2、进入kahadb文件夹中,可以看到组成kahadb的文件

db-1.log:存储消息到预定义大小的数据记录文件中,文件名为db-<Number>.log。当数据记录满时,一个新的文件会随之创建,

number数字会随之增加,当不在有引用到数据文件中任何消息时,文件会被删除或者归档。 db.data:该文件包含了持久化的BTree索引,索引消息数据记录中的消息,他是消息的索引文件,本质上是B-Tree(B树),

使用B-Tree作为索引指向db-<Number>.log里面存储信息。

db.free:当前db.data文件中哪些页面是空闲页,文件具体内容是所有空闲页的id

db.redo:用来进行消息恢复,如果KahaDB消息存储在强制退出后启动,用于恢复B-Tree索引

lock:文件锁,表示当前获得Kahadb读写权限的broker

3、JDBC消息存储:

基于jdbc进行存储

详细查看:https://my.oschina.net/u/3535099/blog/3161719

4、LevelDB消息存储

这种文件系统 是从activeMQ5.8之后引进的,他和KahaDB非常相似,也是基于文件的本地数据库存储形式,但是他提供比KahaDB更快的持久

性,但他不使用自定义的B-Tree实现索引预写日志,而是使用基于LevelDB的索引

默认配置:

代码语言:javascript
复制
 <persistenceAdapter>
      <levelDB directory="activemq-data"/>
    </persistenceAdapter>

5、JDBC Message store with ActiveMQ journal

这种方式克服了JDBC store的不足,JDBC每次消息过来都需要去操作数据库,ActiveMQ journal,使用高速缓存写入技术,大大提高了性能。

当消费者消费的速度能够及时跟上生产者生产消息的速度,journal文件能够大大减少需要写入到DB中的消息。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、activeMQ高可用
  • 二、持久化机制
  • 三、消息持久化机制有哪些
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档