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 回答