使用Netty 4,我怎样才能检测到我写的数据是否在我的连接端堵塞,如果远程端无法跟上则关闭连接?
我正在检查是否
ChannelHandlerContext.channel.outboundByteBuffer.readableBytes> MaxWriteBuffer
但是最新的Netty 4版本现在给了我一个例外:
java.lang.IllegalStateException:nextOutboundByteBuffer()从中调用 在eventLoop之外
答案 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
}
}
});