MQTT---HiveMQ源碼詳解(五)Netty-啟動與Listeners載入

來源:互聯網
上載者:User

標籤:str   ++   dev   div   ice   function   dcl   title   監聽   

實現功能

啟動netty,按照使用者配置的Listener進行連接埠的監聽,接受用戶端發來的連結

實現步驟

1、啟動netty
2、通過ListenerConfigurationService獲得到使用者的Listener配置,將對應的配置綁定到netty上。

類圖

這個uml熟悉netty的朋友應該看起來很清晰,下來我們帖幾段代碼,來看hivemq是如何綁定的。

public ListenableFuture<List<ListenerStartResult>> startListeners() {//為netty註冊Shutdown,為了使netty主線程在關閉時,能夠關閉掉worker和boss        this.shutdownRegistry.register(new NettyShutdown(this.childEventLoop, this.parentEventLoop, this.hiveMQConfigurationService.internalConfiguration().getInt(Internals.EVENT_LOOP_GROUP_SHUTDOWN_TIMEOUT)));        //記錄Listener啟動的結果的Future列表,方便在日誌/控制台中列印出Listener綁定的結果。        List<ListenerStartFuture> startFutures = new ArrayList<>();        //如果使用者未配置Listener,那麼將預設添加一個綁定到1883連接埠TcpListener        addDefaultListenerWhenListenersIsEmpty();//從使用者配置中獲得到TcpListeners綁定到netty上 startFutures.addAll(startTcpListeners(this.listenerConfigurationService.getTcpListeners()));//從使用者配置中獲得到TlsTcpListeners綁定到netty上         startFutures.addAll(startTlsTcpListeners(this.listenerConfigurationService.getTlsTcpListeners()));//從使用者配置中獲得到WebsocketListeners綁定到netty上startFutures.addAll(startWebsocketListeners(this.listenerConfigurationService.getWebsocketListeners()));//從使用者配置中獲得到TlsWebsocketListeners綁定到netty上startFutures.addAll(startTlsWebsocketListeners(this.listenerConfigurationService.getTlsWebsocketListeners()));//將一堆啟動的Future轉換成一個Future,讓調用者(HiveMQServer)方便使用。        return getStartResult(startFutures);    }

由上面的過程可以知道,具體代碼處理流程
1、由HiveMQServer,調用NettyServer的start,啟動netty。
2、然後再調用startListeners,將配置的Listeners綁定到netty上

MQTT交流群:221405150

MQTT---HiveMQ源碼詳解(五)Netty-啟動與Listeners載入

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.