netty up卵が痛いこと
1332 ワード
2012-1-29
卵が痛いnetty UDP receive BufferSize
nettyの
もちろんです.このようにしても、カバンを受け取ったら新しいスレッドでデータを処理するように強制されますが、少なくとも文書でもはっきり言います.
卵が痛いnetty UDP receive BufferSize
nettyの
NioDatagramWorker
には、受信パケットキャッシュの最大サイズが割り当てられています.デフォルトでは768 Bytesで、卵痛は768 Bを初めて受信した後、第2回キャッシュは768 B*2 bufferに拡張されています.最初のパケットの前の部分のデータは768 Bで、後の768 Bは第2のパケットの前の部分のデータです.変なのは:http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/socket/DatagramChannelConfig.html中にはreceiveBufferSize
がありますが、設定後は無効です.何回か試みた後、receiveBufferSizePredictor
を設置しなければならないことが分かりました. またはreceiveBufferSizePredictorFactory
この受信パケットキャッシュのサイズを変更することができます.例えば:bootstrap.setOption("receiveBufferSize", 1048576);
bootstrap.setOption("receiveBufferSizePredictor", new FixedReceiveBufferSizePredictor(1048576));
// bootstrap.setOption("receiveBufferSizePredictorFactory", new FixedReceiveBufferSizePredictorFactory(1048576));
もう一つの卵が痛いところにツッコミを入れます.バックパッキングを受信した場合、強制的に送信する方法はなく、全体を待つ必要があります.messageReceived
方法で戻ったら、カバンを書きます.例えば:public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
...
e.getChannel().write(responsePacket); // not send out now
Thread.sleep(30000L);
...
}
上記のコードの中でresponsePacket
は書き返す時にすぐに送るのではなく、30秒の方法が終わってから出すのです.もちろんです.このようにしても、カバンを受け取ったら新しいスレッドでデータを処理するように強制されますが、少なくとも文書でもはっきり言います.