1

在 netty 4.0.0.AlphaX 中有ChannelHandlerContext.readable(boolean)暂停传入流量的方法。4.0.0.Beta1 的新文档仍然说:

在 4.0 中,每个 ChannelHandler 在其 ChannelHandlerContext 中都有自己的布尔标志,称为“可读”。该标志告诉处理程序是否希望 Netty 读取入站流量。

问题: readable(boolean) 方法没了,现在只能找到一个ChannelHandlerContext.fireChannelReadSuspended()方法。恢复交通怎么办?

有谁知道如何在 Beta1 升级后暂停/恢复 netty 4 管道上的传入流量?

谢谢你。

注意:“代理”示例仍然有一个 TODO:

// TODO: Suspend incoming traffic until connected to the remote host.
//       Currently, we just keep the inbound traffic in the client channel's outbound buffer.
4

1 回答 1

1

您现在可以为此使用 ChannelOption.AUTO_READ。如果要挂起,只需在 Channel 的 ChannelConfig 上将其设置为 false,并在您想自动重新开始读取时将其设置回 true。

现在,您甚至可以通过一直触发手动读取来走得更远,这有助于在编写代理示例时将内存占用降至最低。我今天早上刚刚更新了代理示例 [1] 以展示这一点。

[1] https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/proxy

于 2013-02-17T19:43:18.763 回答