Java 在netty中iswritable为false后,如何处理新请求?

Java 在netty中iswritable为false后,如何处理新请求?,java,netty,Java,Netty,为了防止oom,我应该控制iswrite何时为false。那么,下面哪种解决方案是最好的呢 (一) 是否在iswritable为false后删除请求 (二) 阻止IO(工作线程)线程通过while(iswritable==false) (三) 写入db/log,然后在空闲时间处理它们? (此解决方案可能不适合我,因为我需要低延迟) 3ks您应该在ChannelInboundHandler实现中使用channelwriteabilitychanged方法,如下所示: 请参阅DiscardClie

为了防止oom,我应该控制iswrite何时为false。那么,下面哪种解决方案是最好的呢

(一) 是否在iswritable为false后删除请求

(二) 阻止IO(工作线程)线程通过while(iswritable==false)

(三) 写入db/log,然后在空闲时间处理它们? (此解决方案可能不适合我,因为我需要低延迟)


3ks

您应该在
ChannelInboundHandler
实现中使用
channelwriteabilitychanged
方法,如下所示:

  • 请参阅DiscardClientHandler中的一个示例(在服务器端也是如此)(您不必使用trafficshapping)
  • 参见API手册
因此,在简历中:

处理程序应尝试写入或直接测试可写性状态,然后使用来自
channelWritabilityChanged
的事件继续写入需要发送的内容


请注意,如果发送文件或区块项目,可以在管道中使用
ChunkedWriteHandler
,然后使用对象来写入,以扩展
ChunkedInput
类(请参见API).

您应该在
ChannelInboundHandler
实现中使用
channelwriteabilitychanged
方法,如下所示:

  • 请参阅DiscardClientHandler中的一个示例(在服务器端也是如此)(您不必使用trafficshapping)
  • 参见API手册
因此,在简历中:

处理程序应尝试写入或直接测试可写性状态,然后使用来自
channelWritabilityChanged
的事件继续写入需要发送的内容

请注意,如果发送文件或区块项目,则可以在管道中使用
ChunkedWriteHandler
,然后使用对象来写入,以扩展
ChunkedInput
类(请参见API)