美文网首页
IdleStateHandler 开启observeOutput

IdleStateHandler 开启observeOutput

作者: 简书徐小耳 | 来源:发表于2019-01-24 12:28 被阅读4次

    IdleStateHandler 开启observeOutput 监控读超时的逻辑是
    监控这次发送的entry对象和上一次的是否一致,以及所有待发送的entry对象的字节总数是否一致

    netty那边是发完一个entry对象后才删除对应entry对象(entry对象是池化的,所以他的hashcode不是很准确)的字节总数,这样的问题是我们发送fileRegion或者大的Bytebuf对象期间会导致写超时。
    而就算换成对没发送一个大循环(默认是16次)就去计算发送的字节数,也会因为后续我们还要添加字节导致
    出现ABA的问题。
    我的建议是通过ChannelProgressivePromise 来设置值 如果每次不等于0 代表在这期间起码发送了 所以可以不用发送写超时

    相关文章

      网友评论

          本文标题:IdleStateHandler 开启observeOutput

          本文链接:https://www.haomeiwen.com/subject/leyyjqtx.html