不久的将来,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 就应该被拆除,这意味着所有处理程序都将被删除,并且每个 ChannelHandler
的 handlerRemoved
将被调用。
在我们的 Netty 客户端中,有我们调用的实例:
channel.closeFuture().sync();
完成后,我们看到更多数据进入我们的处理程序之一。我们已经编写了一个 Http2ConnectionHandler,即使在不久的将来完成后,它也是接收数据的处理程序。
我的问题是:不久的将来什么时候完成,完成后管道还能做更多的工作吗?
答案: 是的,关闭未来的火灾,然后按照诺曼在下面所说的那样拆除管道。
当基础通道(在 HTTP/2 情况下,TCP/IP 连接)关闭时,将触发 closeFuture()
。这可能是因为您或远程对等方关闭了连接。与关闭通道关联的 Netty 管道不应再接收任何数据。显式 reading/writing 关闭通道将引发异常。
更具体地说,一旦 Channel 关闭,ChannelPipeline 就应该被拆除,这意味着所有处理程序都将被删除,并且每个 ChannelHandler
的 handlerRemoved
将被调用。