RocketMQ-消息清理

RocketMQ-消息清理,第1张

RocketMQ-消息清理 介绍

消息被消费过后会被清理掉吗?这个RocketMQ是不会的。

消息是被顺序存储在commitlog文件中的,且消息大小不定长,所以消息的清理是不可能以消息为单位进行清理的,而是以commitlog文件为单位进行清理的,否则会急剧下降清理效率,并实现逻辑复杂,commotlog文件存在一个过期时间,默认为72小时,即三天,除了用户手动清理外,在一下情况下也会自动清理,无论文件中的消息是否被消费过

  • 文件过期,且达到清理时间点(默认为凌晨4点)后自动清理过期文件
  • 文件过期,且磁盘空间占用率达到清理接线(默认75%)后,无论是否是达到清理时间点,都会自动清理过期文件
  • 磁盘占用率达到清理界限(默认85%)后,开始按照设定好的规则清理文件,无论是否过期,默认会从最老的文件开始清理
  • 磁盘占用率达到系统危险警戒线(默认90%)后,Broker拒绝消息写入
测试消费过的消息不会清除

使用Topic为test-topic,设置生产者往RocketMQ中以test-topic作为Topic发送10条测试消息,消费者监听Topic为test-topic且Consumer Group为test-consumer-a,那么消费者为test-consumer-a的会消费掉10条消息,那么此时我们可以在启动一个消费者,这时我们这个新的消费者的Consumer Group不再是test-consumer-a,而是test-consumer-new,那么这个test-consumer-new启动后也会拿到这10条消息。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5680728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存