RocketMQ的心脏:Broker
这节介绍下RocketMQ中最后的一个部分,也是内容较多的一部分:Broker。
Broker的启动同其他几个组件一样,从XXXStartup(BrokerStartup)类的main方法开始,首先加载对应的配置文件XXXConfig(BrokerConfig、NettyServerConfig、NettyClientConfig、MessageStoreConfig),然后实例化XXXController(BrokerController),接着调用Controller的initialize方法,最后注册ShutdownHook。
Broker在构造方法中,会进行如下的实例化动作:
包括:
- 配置类:BrokerConfig、NettyServerConfig、NettyClientConfig、MessageStoreConfig
- 管理类:ConsumerOffsetManager(偏移量管理)、TopicConfigManager(topic配置管理)、ConsumerManager(消费者管理)、ConsumerFilterManager(消费者过滤管理)、ProducerManager(生产者管理)、SubscriptionGroupManager(订阅组管理)、FilterServerManager(服务端过滤管理)、BrokerStatsManager(broker状态管理)
- 服务类:PullMessageProcessor(拉取消息处理器)、PullRequestHoldService(拉取请求缓存服务)、ClientHousekeepingService(客户端长连接服务)、SlaveSynchronize(slave同步)
- 监听类:NotifyMessageArrivingListener(通知消息到达监听器)、DefaultConsumerIdsChangeListener(客户端id改变监听器)
- 工具类:Broker2Client、BrokerOuterAPI
- 线程队列类:发送线程、拉取线程、查询线程、客户端管理线程、消费者管理线程、心跳线程、事务线程
Broker的初始化和启动过程如下:
初始化的步骤为:
- 加载配置文件,由TopicConfigManager处理:存储每个topic的配置信息;ConsumerOffsetManager:缓存所有topic@group对应的queue的偏移量;SubscriptionGroupManager:存储每个group的配置信息;ConsumerFilterManager:Topic