先看BrokerStartUp方法

一、createBrokerController 创建brokerController

1.初始化NettySystemConfig

 1.1 如果配置的发送sndbuf和接收rcvbuf为空,就设置默认大小  

 1.2 构造options,然后解析成命令行commandLine,如果为空,系统就退出

 1.3 设置监听listenPort

 1.4 根据不同的command类型,加载不同的配置

 1.5 根据config配置创建controller, 并且完成注册

二、调用start方法

调用controller.start()

2.1 启动消息存储messageStore

2.2 启动remotingServer

2.3 启动sslContext监听器

2.4 启动pull模式的请求处理

2.5 扫描异常的channel服务启动

2.6 创建filterServer,start启动

2.7 如果是slave角色的broker,启动事务消息检查,遍历未提交、未回滚的部分消息并向生产者发送检查请求以获取事务状态 // 进行偏移量的检查和计算等操作,并移除掉需要丢弃的消息

2.8 处理slave同步操作,同步topic配置、消费者偏移量、延迟偏移量、订阅组配置等信息

2.9  注册broker到NameServer

2.10 启动BrokerStatsManager,统计信息

2.11 快速失败处理,主要用户清理掉各个队列中已经过期的请求

RocketMQ 源码分析03 broker 启动_偏移量

RocketMQ 源码分析03 broker 启动_初始化_02


RocketMQ 源码分析03 broker 启动_初始化_03

producer意外宕机,broker会主动回调producer group内的任意一台机器来确认事务状态

RocketMQ 源码分析03 broker 启动_偏移量_04

广播方式,消费组下面的每个实例consumer就会消费全量数据

RocketMQ 源码分析03 broker 启动_初始化_05

1.消息索引 key--> offset

2.事务消息状态

3.定时发送消息