RocketMQ这两条消息没有被删除是因为他们所存储的文件没有达到1G,还属于当前写文件吗?这个主题总共就两条消息而已
我看commitlog的文件的最近更新是7.13号的
我的文件保存时间是默认的48
在RocketMQ中,消息的删除是通过定期清理物理文件来实现的。当一个主题或队列的消息存储文件(CommitLog文件)大小达到指定的上限时,RocketMQ会启动清理线程,删除已经被消费或过期的消息。
如果某些消息尚未被删除,可能有以下几种原因:
消息尚未过期:RocketMQ可以根据消息的过期时间来判断是否需要删除消息。如果消息的过期时间还未到达,RocketMQ将不会删除该消息,而是等待消息过期后再进行清理。
消息仍然存在于当前写文件中:在消息写入CommitLog文件之后,RocketMQ并不会立即从文件中删除这些消息。只有当包含这些消息的文件被标记为可删除时,才会启动清理线程来删除这些消息。因此,即使消息的文件大小尚未达到1GB的上限,仍然属于当前写文件的范畴,这些消息也不会被删除。
应该是文件没有过期。 如果文件过期了, 就会删除
——此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/