* Add version description
@ -1,3 +1,5 @@
该文所涉及的 RocketMQ 源码版本为 4.9.3。
# RocketMQ CommitLog 详解
commitlog 目录主要存储消息,为了保证性能,顺序写入,每一条消息的长度都不相同,每条消息的前面四个字节存储该条消息的总长度,每个文件大小默认为 1G,文件的命名是以 commitLog 起始偏移量命名的,可以通过修改 broker 配置文件中 mappedFileSizeCommitLog 属性改变文件大小
# RocketMQ ConsumeQueue 详解
RocketMQ 基于主题订阅模式实现消息消费,消费者关注每一个主题下的所有消息,但是同一主题下的消息是不连续地存储在 CommitLog 文件中的,如果消费者直接从消息存储文件中遍历查找主题下的消息,效率会特别低。所以为了在查找消息的时候效率更高一些,设计了 ConsumeQueue 文件,可以看作 CommitLog 消费的目录文件.
# RocketMQ 消费者启动流程
org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl#start
# RocketMQ IndexFile 详解
首先明确一下 IndexFile 的文件结构
# RocketMQ MappedFile 内存映射文件详解
1、MappedFile 初始化
# RockerMQ Nameserver 如何与 Broker 进行通信的?
nameserver 每隔 10s 扫描一次 Broker,移除处于未激活状态的 Broker
# RocketMQ 生产者启动流程
入口:
# RocketMQ 消息拉取流程
之前在消费者启动流程中描述过 MQClientInstance 的启动流程,在启动过程中会启动 PullMessageService,它继承了`ServiceThread`,并且 ServiceThread 实现了 Runnable 接口,所以是单独启动了一个线程
# RocketMQ 消息发送流程
这里以同步发送为示例讲解:
# RocketMQ 消息发送存储流程
第一步:检查消息存储状态