RocketMQ | 源代码分析 | 消息交换
发布时间
阅读量:
阅读量
一、前言
前文阐述了消息从 Broker 到 MappedFile 内存缓冲区的详细路径;然而,在此之后的消息存储任务尚未完成, 因为尚未被写入文件中. 接下来我们将深入探讨 RocketMQ 的消息写入机制.
带着问题阅读
- 如何同步刷盘的?刷盘的流程是什么
- 刷盘的条件是什么?
二、刷盘策略
CommitLog在初始化的时候,会根据配置,启动两种不同的刷盘服务。
if (FlushDiskType.SYNC_FLUSH == defaultMessageStore.getMessageStoreConfig().getFlushDiskType()) {
this.flushCommitLogService = new GroupCommitService();
} else {
this.flushCommitLogService = new FlushRealTimeService();
}
同步操作是指当消息被追加至内存后立即完成并存储到文件中。
异步操作则是指当消息被追加至内存时,并非立即完成存储动作,
而是安排在后台任务中执行相应的操作。
RocketMQ系统默认优先采用异步操作策略。
当CommitLog在putMessage()方法处理完成后,
成功将
全部评论 (0)
还没有任何评论哟~
