共计 680 个字符,预计需要花费 2 分钟才能阅读完成。
简介
NameServer是整个 RocketMQ 的“大脑”, 提供动态 路由发现
与剔除机制
。其启动过程中最核心的就是: 开启 Netty 的服务端
,并注册请求处理器来处理 Broker 连上后的请求; 开启定时任务
,每隔 10s 扫描一次 Broker,移除处于不激活状态的 Broker。
时序图
NameServer 启动过程描述如下:
- 解析配置文件,填充 NameServerConfig、NettyServerConfig 属性值,并且根据启动属性创建 NameSrvController;
- 调用 NameSrvController 的 initialize 方法,完成 DefaultRequestProcessor 的注册,用于处理 Broker 连接请求,启动定时任务,定时任务中调用 routeInfoManager 的 scanNotActiveBroker 方法,每隔 10s 扫描一次 Broker,移除处于不激活状态的 Broker,初始化一个文件监听器,用于监听配置文件的改变;
- 调用 NameSrvController 的 start 方法,内部分别调用了 remotingServer 的 start 方法和 fileWatchService 的 start 方法。其中 remotingServer 的 start 方法主要用于开启 Netty server 端,等待 Broker 的连接,如果 Broker 连接上后,最终便会调用注册的 DefaultRequestProcessor 的 processRequest 方法来处理连接请求;fileWatchService 的 start 方法主要是启动一个线程来监听配置文件的改变,如果有改变则重新加载文件。
正文完