Netty中的Channel.isWritable notofication

Bha*_*kar 5 java netty

我有一个场景,我需要继续写一个Channel.如果它无法获取更多数据(因为缓冲区已满等),我需要停止写入,但需要在通道再次可写时立即恢复.当通道再次可写时,如何确定此瞬间?是否有一个我可以覆盖的回调事件?我正在扩展SimpleChannelUpstreamHandler我的业务处理程序 - 这有一个方法channelInterestChanged()- 但不确定这是否是正确的钩子进入?

我希望避免使用基于线程的原始等待机制,如wait-notify,因为这些将涉及上下文切换.任何非阻塞的方式来实现这种等待?

Nor*_*rer 7

您可以覆盖该channelInterestChanged()方法.

像这样的东西:

public class MyHandler extends SimpleChannelUpstreamHandler {
    ....

    @Override
    public void channelInterestChanged(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
        if (e.getChannel().isWritable() {
            .....
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该做的工作

  • 在netty 4.x中它是"channelWritabilityChanged(...)" (3认同)