RocketMQ 消息存储

消息存储

  主要的存储文件:

  1、消息文件(commitLog)

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

  3、Hash索引文件(IndexFile)

  4、检测点文件(checkpoint)

  5、关闭异常文件(abort)

文件刷盘机制

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

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

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

过期文件删除机制

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

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

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

原文地址:https://www.cnblogs.com/chen--biao/p/10166546.html