2017-03-06 5 views
0

ビジネスロジックをどこに置くべきですか?ビジネスロジックをどこに置くべきですか? chanelRead0()またはタスクを実行しますか?

私のコードを@Override channelRead0()に入れたり、タスクを実行するだけでよいですか? 私は両方が同じIO eventLoopに実行されることを知っていますが、それらの違いは何ですか?どちらがいいですか?

解決方法1:

@Override 
channelRead0(){ 
    business code; 
} 

解決方法2:

@Override 
channelRead0(){ 
    ctx.executor().submit(new task(){business code}); 
    //or ctx.channel().eventLoop().submit(new task(){business code}); 
} 
+0

カスタマイズをしない限り、NioEventLoopを使用すると、タスクは実際には 'channelRead0'メソッドを実行するスレッドのタスクキューに送信されます:) – coolcfan

答えて

1

限り、あなたはどのブロック操作を使用しないよう(例えばDBから読み込ん)channelRead0は完全に罰金だろう。一般的には決定するのはあなた次第です。 Submitメソッドは、低速オペレーション、非同期オペレーション、またはタイムドイベントを実行する必要がある場合に、より多くの可能性があります。

関連する問題