2013-11-02 304 views
3

我計劃修改Netty UptimeClient(請參閱here)。原始版本設計爲無限運行:它在斷開連接的情況下重新連接到主機。我想在UptimeClient.java中添加一個'terminate'方法。該方法將斷開或停止與外部線程的重新連接進程,優雅地關閉Netty並返回。Netty:停止重新連接和關閉

由於客戶端通道可能會因爲重新連接過程而發生變化,因此在ChannelGroup中保留'bootstrap.connect()'返回的所有通道並在發佈Netty資源之前使用該組來調用'close'是安全的嗎?

你將如何實施'終止'方法? (編輯:使用3.7.0)

回答

5

在Nety 4.0中,您可以撥shutdownGracefully(...)上的EventLoopGroup來管理您的所有頻道。然後所有現有頻道將自動關閉,重新連接嘗試應被拒絕。如果這不起作用,請隨時提出問題。

如果你使用的是Netty 3.x,不幸的是,這裏沒有自動機制。您必須確保關閉所有通道,因爲事件循環不會自行終止,直到它具有要管理的通道。有關更多信息,請參閱NioClientChannelFactory('線程的生命週期和正常關機')

+0

是否存在使用版本3.7.0的等效機制? EventLoopGroup僅在Netty 4. +中存在。 –

+0

更新了答案。 – trustin