RocketMQ实战之 过期文件删除机制

2,878 阅读1分钟

为什么要有文件过期删除机制

RocketMQ启动时会加载commitLog、commitQueue目录下的所有文件,为了避免内存和磁盘的浪费,所以引入过期文件删除机制。

RocketMQ删除过期文件的方法

如果非当前写文件在一定的时间间隔内没有再次被更新,则认为是过期文件,可以被删除。RocketMQ不会关注这个文件上的消息是否全部被消费。

默认过期时间72小时,可通过 fileReservedTime 修改

过期文件删除机制

  1. 每隔10秒调度一次 cleanFilesPeriodically ,检测是否需要清理过期文件

  2. 满足以下三个条件之一将继续执行文件删除

    • 指定删除文件的时间点 默认凌晨4点
    • 磁盘空间不足
    • 手动触发删除
  3. 执行文件删除

可通过配置删除调度时间间隔、文件过期时间、文件删除时间点、磁盘占用比例等来清理过期文件