RocketMQ源码解析
1 NameServer
1.1 NameServer启动流程

1.2 NameServer处理Broker注册信息

2 Broker
2.1 Broker启动与注册信息

2.2 Broker消息的存储结构

2.2.1 CommitLog
默认大小是1G,可以通过MessageStoreConfig中的mappedFileSizeCommitLog属性查看。
CommitLog是消息存储的真正物理文件,文件名按照文件偏移量递增。
一个CommitLog是被多个ConsumerQueue所共享的。
CommitLog采用的是顺序写随机读的方式
2.2.2 ConsumerQueue
consumerqueue是逻辑消息队列,一个topic下有几个队列,则会在对应的目录存储相应的 consumerqueue文件。
consumerqueue不会存储具体的消息,只负责记录所属topic在commitlog中的偏移量,是消息的逻辑队列,类似于数据库的索引文件,存储的是指向物理存储的地址。
2.2.3 IndexFile
IndexFile则提供了一种可以通过key或时间区间来查询消息的方法
2.3 Broker消息处理整体流程

2.3.1 Broker接收消息流程SendMessageProcessor

2.3.2 Broker分发消息流程ReputMessageService

2.3.3 Broker消费消息流程PullMessageProcessor

2.4 过期文件的处理

3 Producer
3.1 Producer发送消息(同步)
.jpg)
4 Consumer
Consumer消费消息支持两种模式:推模式和拉模式
推模式:当producer把消息发送到broker之后,broker将消息推送给consumer,但这种推模式其实也是基于拉模式实现的
拉模式:consumer主动向broker拉消息
两种模式用的最多的是推模式,所以就以推模式为例进行分析
4.1 Consumer启动

4.2 Consumer线程消费消息

RocketMQ源码解析
http://www.zivjie.cn/2023/06/11/消息队列/RocketMQ/源码解析/