如何在可写入后处理新请求在netty中是错误的?

时间:2016-01-22 00:47:00

标签: java netty

为了防止oom,我应该控制iswrite何时为false。所以哪种解决方案最好?

(1) 在iswritable之后删除请求是否为假?

(2) 阻止IO(工作者)线程通过while(iswritable == false)?

(3) 写入db / log然后在空闲时间处理它们? (由于我需要低延迟,这个解决方案对我来说可能不对)

3KS

1 个答案:

答案 0 :(得分:0)

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

  • 在DiscardClientHandler中查看一个示例here(在服务器端非常相同)(您没有义务使用流量标记)
  • 请参阅API手册here

所以在简历中:

您的处理程序应该尝试编写或直接测试可写性状态,然后使用channelWritabilityChanged中的事件继续写下您需要发送的内容。

请注意,如果您发送文件或块项目,则可以使用管道中的ChunkedWriteHandler,然后使用一个对象来编写扩展ChunkedInput类的对象(请参阅API here )。