乐趣区

RocketMQNameServer启动流程

简介

NameServer是整个 RocketMQ 的“大脑”, 提供动态 路由发现 剔除机制 。其启动过程中最核心的就是: 开启 Netty 的服务端 ,并注册请求处理器来处理 Broker 连上后的请求; 开启定时任务,每隔 10s 扫描一次 Broker,移除处于不激活状态的 Broker。

时序图

NameServer 启动过程描述如下:

  1. 解析配置文件,填充 NameServerConfig、NettyServerConfig 属性值,并且根据启动属性创建 NameSrvController;
  2. 调用 NameSrvController 的 initialize 方法,完成 DefaultRequestProcessor 的注册,用于处理 Broker 连接请求,启动定时任务,定时任务中调用 routeInfoManager 的 scanNotActiveBroker 方法,每隔 10s 扫描一次 Broker,移除处于不激活状态的 Broker,初始化一个文件监听器,用于监听配置文件的改变;
  3. 调用 NameSrvController 的 start 方法,内部分别调用了 remotingServer 的 start 方法和 fileWatchService 的 start 方法。其中 remotingServer 的 start 方法主要用于开启 Netty server 端,等待 Broker 的连接,如果 Broker 连接上后,最终便会调用注册的 DefaultRequestProcessor 的 processRequest 方法来处理连接请求;fileWatchService 的 start 方法主要是启动一个线程来监听配置文件的改变,如果有改变则重新加载文件。
退出移动版