开发者社区 > 云原生 > 云消息队列 > 正文

RocketMQ这两条消息没有被删除是因为他们所存储的文件没有达到1G,还属于当前写文件吗?

RocketMQ这两条消息没有被删除是因为他们所存储的文件没有达到1G,还属于当前写文件吗?这个主题总共就两条消息而已e221d2ad00aeb8241bcc1bc1bd91ebf2.png
我看commitlog的文件的最近更新是7.13号的08f782952c586a6cbe1fdf19ea9d2f72.png
3f0c5e42fbf7aa5c501b93581ad25cbf.png
我的文件保存时间是默认的48

展开
收起
游客6poszk7nfmalm 2023-07-23 20:34:07 95 0
2 条回答
写回答
取消 提交回答
  • 在RocketMQ中,消息的删除是通过定期清理物理文件来实现的。当一个主题或队列的消息存储文件(CommitLog文件)大小达到指定的上限时,RocketMQ会启动清理线程,删除已经被消费或过期的消息。

    如果某些消息尚未被删除,可能有以下几种原因:

    1. 消息尚未过期:RocketMQ可以根据消息的过期时间来判断是否需要删除消息。如果消息的过期时间还未到达,RocketMQ将不会删除该消息,而是等待消息过期后再进行清理。

    2. 消息仍然存在于当前写文件中:在消息写入CommitLog文件之后,RocketMQ并不会立即从文件中删除这些消息。只有当包含这些消息的文件被标记为可删除时,才会启动清理线程来删除这些消息。因此,即使消息的文件大小尚未达到1GB的上限,仍然属于当前写文件的范畴,这些消息也不会被删除。

    2023-07-28 09:51:41
    赞同 展开评论 打赏
  • 应该是文件没有过期。 如果文件过期了, 就会删除b74b96d9376f8c1f78acbb3fe583d9a6.png

    ——此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-07-23 20:45:11
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 热门讨论

    热门文章

    相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载