RocketMQ 消息存储

Posted chen--biao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RocketMQ 消息存储相关的知识,希望对你有一定的参考价值。

消息存储

  主要的存储文件:

  1、消息文件(commitLog)

  2、消息消费队列文件(consumeQueue)

  3、Hash索引文件(IndexFile)

  4、检测点文件(checkpoint)

  5、关闭异常文件(abort)

 

 

文件刷盘机制

  RocketMQ的存储与读写是基于JDK NIO的内存映射机制(MappedByteBuffer)的,消息存储时首先将消息追加到内存,再根据配置的刷盘策略在不同时间进行刷写磁盘。

  同步刷写:消息追加到内存后,立即将内存消息刷写到磁盘,再对客户端进行应答。

  异步刷写:消息追加到内存后,先应答客户端,再使用线程按照设定的频率将内存刷写到磁盘上。(默认的刷写机制)

 

过期文件删除机制

  因:所有的写操作都在最后一个文件(CommitLog,ConsumeQueue)上,之前的文件在下一个文件创建完成后将不会再被更新。

  果:清除文件的方法是:如果非当前文件在一定时间间隔内没有再次被更新,则认为是过期文件,可以被删除。

 

待补充:消息的消费具体工作方式。

 

以上是关于RocketMQ 消息存储的主要内容,如果未能解决你的问题,请参考以下文章

rocketmq源码分析:消息存储与消息通信

RocketMQ源码学习--消息存储篇

(转)RocketMQ源码学习--消息存储篇

RocketMQ消息队列——消息存储详解

RocketMQ消息队列——消息存储详解

RocketMQ Broker消息存储结构图