RocketMQ探索-broker啓動

RocketMQ的broker在RocketMQ體系中是比較核心的一環,因此理解了broker就盡得RocketMQ80%的精髓。先從broker的啓動開始:spa

  • 看看總體的流程(比較複雜)

  • 啓動過程:分爲initialize和start

         initialize作了哪些事情:線程

加載Topic配置(topicConfigManager);日誌

加載消費進度存儲(consumerOffsetManager);netty

加載訂閱組配置管理(subscriptionGroupManager);對象

初始化存儲層(DefaultMessageStore);ip

初始化通訊層(remotingServer和fastRemotingServer);rem

初始化線程池(sendMessageExecutor處理髮送消息線程池,pullMessageExecutor處理拉取消息線程池,adminBrokerExecutor處理管理Broker線程池,clientManageExecutor處理管理Client線程池);同步

將線程池(SendMessageProcessor,pullMessageProcessor,QueryMessageProcessor,ClientManageProcessor,EndTransactionProcessor,AdminBrokerProcessor)註冊到netty消息處理器當中(remotingServer和fastRemotingServer對象中)it

啓動相關執行任務(天天凌晨統計消息量的任務(brokerStats.record()),定時刷消費進度(consumerOffsetManager.persist()),)io

獲取NameServer地址或者開啓定時獲取NameServer地址任務;

若是是slave:開啓Slave定時從Master同步配置信息任務,若是是Master,開啓增長統計日誌任務;

       start作了哪些事情:

啓動剛剛初始化的各個管理器(消息存儲啓動(DefaultMessageStore.start());通訊層啓動(remotingServer.start(),fastRemotingServer.start());brokerOuterAPI.start();pullRequestHoldService.start();啓動檢測全部客戶端鏈接(clientHousekeepingService.start());filterServerManager.start();filterServerManager.start();brokerStatsManager.start();brokerFastFailure.start())

啓動時,強制註冊:registerBrokerAll()

開啓定時把Broker註冊到NameServer的任務

 

以上分析很粗,後面慢慢細化

相關文章
相關標籤/搜索