Netty客户端限制了队列丢弃策略

时间:2011-12-07 02:39:02

标签: netty

连接到第三方服务器的OutMemoryError,它无法足够快地处理请求。

尝试使用有界队列和丢弃策略(ThreadPoolExecutor.DiscardPolicy)传递NioClientSocketChannelFactory来传递执行程序服务,但仍然得到OutOfMemoryError。

我错过了什么?

由于

1 个答案:

答案 0 :(得分:9)

如果您的客户端Netty频道的写缓冲区已满,且服务器读取速度不够快,您将在客户端看到OutOfMemoryError。为避免这种情况,如果Channel.isWritable()返回false,则必须停止撰写。当状态为channelInterestOpsChanged Channel.isWritable()Channel.writable' changes. Then, you can check again if为真时,您会收到returns事件通知,并继续撰写。

如果可以放弃待处理的数据,如果Channel.write()返回Channel.isWritable(),我就不会致电false

您可以使用Channel.writable中提供的水印属性配置NioSocketChannelConfig属性更改的时间。另外,请查看使用此技术的'discard'示例。