の1つのインスタンスを共有この質問ではHashedWheelTimer
Netty Comet Async request time out
それは、パイプラインの間HashedWheelTimer
の1つのインスタンスを共有するために、私に示唆されました。
私の現在のコードは、私の知る限り、私はパイプラインの間HashedWheelTimer
の1つのインスタンスを共有するが、IdleStateHandler
の新しいインスタンスを毎回作成するか見CAとしてこの
@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;
のように見えます。
間違っていますか?誰でもそれを正しく行う方法について私を助けることができますか? IdleStateHandler
とHashedWheelTimer
のインスタンスを静的にする必要がありますか?
返信いただきありがとうございます.HishedWheelTimerをPipelineの工場クラス外で開始し、その参照をコンストラクタに渡すことはできますか?どの方法が好ましいですか? –
HashedWheelTimerインスタンスを静的に初期化し、参照を渡すことは問題ありません。複数のパイプラインがある場合は、ファクトリメソッドが優先されます。 –
@ JestanNirojanありがとう、この回答は私にとっても役に立ちました。同じ 'HashedWheelTimer'を様々な' ChannelPipeline'間で共有するべきですか?つまり、 'ChannelPipelineFactory'クラス内に静的な' Timer'変数を宣言し、 'Channels.pipeline()'を呼び出して作成したすべての私の 'ChannelPipeline'を使ってそれを使用できますか? – gravetii