不久的将来,Netty 管道还能工作吗?

Can a Netty pipeline still do work after the close future is done?

在我们的 Netty 客户端中,有我们调用的实例:

channel.closeFuture().sync();

完成后,我们看到更多数据进入我们的处理程序之一。我们已经编写了一个 Http2ConnectionHandler,即使在不久的将来完成后,它也是接收数据的处理程序。

我的问题是:不久的将来什么时候完成,完成后管道还能做更多的工作吗?

答案: 是的,关闭未来的火灾,然后按照诺曼在下面所说的那样拆除管道。

当基础通道(在 HTTP/2 情况下,TCP/IP 连接)关闭时,将触发 closeFuture()。这可能是因为您或远程对等方关闭了连接。与关闭通道关联的 Netty 管道不应再接收任何数据。显式 reading/writing 关闭通道将引发异常。

更具体地说,一旦 Channel 关闭,ChannelPipeline 就应该被拆除,这意味着所有处理程序都将被删除,并且每个 ChannelHandlerhandlerRemoved 将被调用。