2

Netty 4 を使用して、書き込みデータが接続側で詰まっていることを検出し、リモート エンドが追いつかない場合に接続を閉じるにはどうすればよいですか?

かどうかチェックしていた

ChannelHandlerContext.channel.outboundByteBuffer.readableBytes > MaxWriteBuffer

しかし、最新の Netty 4 バージョンでは、例外が発生します。

java.lang.IllegalStateException: eventLoop の外から呼び出された nextOutboundByteBuffer()

4

1 に答える 1

2

そうしないとスレッドセーフではないため、EventLoop からこれを行う必要があります。

だから、このようなもの:

ChannelHandlerContext ctx = ....
final Channel channel = ctx.channel();
channel.eventLoop().execute(new Runnable() {
    public void run() {
        if (channel.outboundByteBuffer.readableBytes() > MaxWriteBuffer) {
            // do something
        }
    }
});
于 2013-05-08T05:51:47.797 に答える