请问RocketMQ消息写入到内存就转发到消费队列还是要刷盘到磁盘才转发到消费队列呢?
RocketMQ将消息写入到内存缓冲区之后,会将消息立即转发到消费队列。它并不会将消息先刷盘到磁盘再转发到消费队列。
RocketMQ有一个消息的提交流程:当生产者向Broker发送消息时,Broker会将消息先写入到内存缓冲区中。然后,Broker会立即将消息转发到消费队列,同时将消息的元数据(例如消息的偏移量、主题、队列等)写入到commit log日志文件中。在这个过程中,消息是不会先刷盘到磁盘再转发到消费队列的。
但是,RocketMQ在将消息写入到内存缓冲区之后,会对缓冲区进行定期的刷盘操作,将消息从内存缓冲区
刷盘到磁盘,以便在Broker重启或者意外停机的情况下,可以从磁盘恢复数据。但是这个过程并不会影响消息转发到消费队列的速度。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/