如何在Netty 4中丢弃拥塞的连接

时间:2013-05-03 22:40:11

标签: netty

使用Netty 4,我怎样才能检测到我写的数据是否在我的连接端堵塞,如果远程端无法跟上则关闭连接?

我正在检查是否

  

ChannelHandlerContext.channel.outboundByteBuffer.readableBytes>   MaxWriteBuffer

但是最新的Netty 4版本现在给了我一个例外:

  

java.lang.IllegalStateException:nextOutboundByteBuffer()从中调用   在eventLoop之外

1 个答案:

答案 0 :(得分:2)

您需要从EventLoop执行此操作,否则它不是线程安全的。

这样的事情:

ChannelHandlerContext ctx = ....
final Channel channel = ctx.channel();
channel.eventLoop().execute(new Runnable() {
    public void run() {
        if (channel.outboundByteBuffer.readableBytes() > MaxWriteBuffer) {
            // do something
        }
    }
});