NameServer 啓動類:NamesrvStartup編程
1.解析配置文件,填充屬性
核心代碼
分析
- 1.解析配置文件把指定的配置文件或啓動命令中的選型值填充到namesrvConfig、nettyServerConfig 對象,參數來源有如下兩種形式:
- -c configFile 經過-c 命令指定配置文件路徑
- 使用"-- 屬性名 屬性值" 例如 --listenPort 9876
- 2.啓動NameServer 時,能夠使用./mqnameserver -c configfile -p 打印當前配置信息
NamesrvConfig 重要屬性
NettyServerConfig 重要屬性
2.建立、初始化NamesrvController實例
- 加載KV 配置,建立NettyServer 網絡處理對象,而後開始兩個定時任務,在RocketMQ 中此類定時任務統稱爲心跳機制。
- 定時任務1:NameServer 沒隔10s 掃描一次Broker,移除處於不激活狀態的Broker.
- 定時任務2:NameServer 每隔10分鐘,打印一次KV 配置
3.註冊JVM 鉤子函數並啓動服務器,以便監聽Broker、消息生產者的網絡請求。
這段代碼爲咱們提供了一種編程技巧,若是代碼中使用了線程池,一種優雅停機的方式就是註冊一個JVM 鉤子函數,在JVM 進程關閉以前,先將線程池關閉,及時釋放資源。
總結