簡介
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方法主要是啓動一個線程來監聽配置文件的改變,如果有改變則重新加載文件。