admin管理员组

文章数量:1567915

消息被消费过后会被清理掉吗?不会的。

消息是被顺序存储在 commitlog 文件的,且消息大小不定长,所以消息的清理是不可能以消息为单位进 行清理的,而是以commitlog 文件为单位进行清理的。否则会急剧下降清理效率,并实现逻辑复杂。 commitlog 文件存在一个 过期时间 ,默认为 72 小时,即三天。除了用户手动清理外,在以下情况下也 会被自动清理,无论文件中的消息是否被消费过: (1)文件过期,且到达 清理时间点 (默认为凌晨 4 点)后,自动清理过期文件 (2)文件过期,且磁盘空间占用率已达 过期清理警戒线 (默认 75% )后,无论是否达到清理时间点,都会自动清理过期文件 (3)磁盘占用率达到 清理警戒线 (默认 85% )后,开始按照设定好的规则清理文件,无论是否过期。 默认会从最老的文件开始清理 (4)磁盘占用率达到 系统危险警戒线 (默认 90% )后, Broker 将拒绝消息写入 需要注意以下几点: 1 )对于 RocketMQ 系统来说,删除一个 1G 大小的文件,是一个压力巨大的 IO 操作。在删除过程 中,系统性能会骤然下降。所以,其默认清理时间点为凌晨 4 点,访问量最小的时间。也正因如 果,我们要保障磁盘空间的空闲率,不要使系统出现在其它时间点删除 commitlog 文件的情况。 2 )官方建议 RocketMQ 服务的 Linux 文件系统采用 ext4 。因为对于文件删除操作, ext4 要比 ext3 能更好

本文标签: 消息RocketMQ