2
的一個實例,在這個問題上共享HashedWheelTimer
Netty Comet Async request time out
有人建議對我來說,管道之間共享的HashedWheelTimer
一個實例。
我當前的代碼看起來像這樣
@Override
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline = Channels.pipeline();
pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("handler", new HTTPRequestHandler());
Timer timer = new HashedWheelTimer();
pipeline.addLast("timeout", new IdleStateHandler(timer, 30, 30, 0));
return pipeline;
至於我Ca見我做分享的管道之間HashedWheelTimer
一個實例,但創造的每一次IdleStateHandler
新的實例。
它錯了嗎?任何人都可以幫助我如何正確地做到這一點?我應該使IdleStateHandler
和HashedWheelTimer
是靜態的嗎?
感謝您的回覆,可以在Pipeline工廠類之外啓動HashedWheelTimer並在構造函數中傳遞它的引用嗎?哪種方法是首選? – 2012-03-18 14:23:37
將HashedWheelTimer實例初始化爲靜態並傳遞引用應該沒問題,如果您有多個管道,則首選工廠方法。 – 2012-03-18 17:39:30
@JestanNirojan謝謝,這個答案對我也很有用。那麼應該在各種'ChannelPipeline'之間共享同一個'HashedWheelTimer'嗎?換句話說,我可以在'ChannelPipelineFactory'類中聲明一個靜態的'Timer'變量,並通過調用'Channels.pipeline()'創建的所有''ChannelPipeline'中使用它。 – gravetii 2014-05-27 17:30:15