在Netty 4 “代理”示例中,通道自动读取选项已被禁用:
serverBootStrap.group(bossGroup, workerGroup)
...
.childOption(ChannelOption.AUTO_READ, false)如果注释为childOption(ChannelOption.AUTO_READ, false),则代理示例将无法工作。更详细地说,在类channelRead的方法HexDumpProxyFrontendHandler中,outboundChannel总是不活动的。
我研究了Netty的源代码,发现“自动读取”在fireChannelActive和fireChannelReadComplete类DefaultChannelPipeline中会产生类似的影响。
if (channel.config().isAutoRead()) {
read();
}但是我仍然不知道自动读取和代理示例之间的关系。在我看来,当数据发送到入站缓冲区时,Netty应该触发通道读取事件。
所以有两个问题:
outboundChannel始终处于不活动状态?发布于 2015-02-03 08:20:12
如果您没有将autoread设置为false,则如果一个通道在另一个通道使用数据之前写入大量数据,则可能会遇到麻烦。由于所有这些都是异步的,所以最终可能会有太多数据的缓冲区,然后进入OOME。
https://stackoverflow.com/questions/28273305
复制相似问题