簡單的場景:什麼是最好的方式來重新連接後Netty中
- 延伸SimpleChannelUpstreamHandler一個較低的水平A級。這個班是發送消息並收到答覆的主力。
系統其他部分可以用來發送和接收消息的頂級B類(可以模擬同步和異步)。這個類創建ClientBootstrap,設置管道工廠,調用bootstrap.connect()並最終獲得類A的句柄/引用,通過該句柄來引發和接收消息。例如:
ChannelFuture future = bootstrap.connect(); Channel channel = future.awaitUninterruptibly().getChannel();
handler = channel.getPipeline()。get(A.class);
我知道A類,我可以覆蓋 公共無效channelClosed(ChannelHandlerContext CTX,ChannelStateEvent E); ,這樣當遠程服務器關閉時,我可以收到通知。
由於通道關閉後,類B中的原始類A引用(處理程序上面)無效,因此我需要用新引用替換它。
理想情況下,我希望類A有一個機制在上面覆蓋的channelClosed方法內通知類B,以便可以在類B中再次調用bootstrap.connect。一種方法是在類A中引用該參考類B.爲此,我需要將B類參考傳遞給PipelineFactory,然後讓PipelineFactory將B的參考傳遞給A.
任何其他更簡單的方法來實現相同的事情?
感謝,
正常工作對我來說,只是當我使用NioEventLoopGroup超過1個線程。每個計劃都會創建一個新的工作線程(達到我池中的最大值),而舊的工作線程不會被處理,爲什麼? –