为了防止oom,我应该控制iswrite何时为false。所以哪种解决方案最好?
(1) 在iswritable之后删除请求是否为假?
(2) 阻止IO(工作者)线程通过while(iswritable == false)?
(3) 写入db / log然后在空闲时间处理它们? (由于我需要低延迟,这个解决方案对我来说可能不对)
3KS
答案 0 :(得分:0)
您应该在channelWritabilityChanged
实施中使用ChannelInboundHandler
方法,如下所示:
所以在简历中:
您的处理程序应该尝试编写或直接测试可写性状态,然后使用channelWritabilityChanged
中的事件继续写下您需要发送的内容。
请注意,如果您发送文件或块项目,则可以使用管道中的ChunkedWriteHandler
,然后使用一个对象来编写扩展ChunkedInput
类的对象(请参阅API here )。