gpt4 book ai didi

java - Netty 中的 Channel.channelInterestChanged

转载 作者:行者123 更新时间:2023-12-04 05:50:24 34 4
gpt4 key购买 nike

我正在使用 Netty channel ,当通过 channel 发送大量数据时,我注意到 Channel.channelInterestChanged事件被触发,立即导致 Channel.isWritable()返回 false。(还有另一个线程在执行 Channel.write() 并且该线程立即失败)。我的问题是:为什么 channel 的利益会发生变化?或者更确切地说是谁在改变它?我编写的代码(服务器或客户端)中没有任何内容会改变兴趣。

最佳答案

它会发生变化,因为您将更多数据写入 Channel,然后它可以在给定时间内传输。 Netty 为您排队数据,直到命中某个阈值,一旦命中,Channel.isWritable() 将返回 false。

如果要更改在 Channel.isWritable() 返回 false 之前允许排队/缓冲的字节数,则必须调整 writeBufferHighWaterMark 和 writeBufferLowWaterMark。

ServerBootstrap sb = ....
sb.setOption("writeBufferHighWaterMark", ..);
sb.setOption("writeBufferLowWaterMark", ..);

无论如何,您应该确保调用 Channel.write(...) 的代码确实检查 Channel.isWritable() 并且仅在返回 true 时写入。您遇到的问题经常出现在慢速网络中。

[1] http://netty.io/docs/stable/api/org/jboss/netty/channel/socket/nio/NioChannelConfig.html

关于java - Netty 中的 Channel.channelInterestChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10132637/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com