Netty中Channel、ChannelPipeline、ChannelHandler、ChannelHandlerContext之间的关系

Netty中Channel、ChannelPipeline、ChannelHandler、ChannelHandlerContext之间的关系

  • 每一个Channel被创建,就会生成对应的一个ChannelPipeline和它绑定。

  • ChannelPipeline中包含了一个处理该Channel消息的ChannelHandler链。

  • 当每一个ChannelHandler被注册到该ChannelPipeline中就会生成一个对应的 ChannelHandlerContext,和该ChannelHandler进行绑定。

  • 一个ChannelHandler可以从属于(注册到)多个ChannelPipeline。所以,一个ChannelHandler可以绑定多个ChannelHandlerContext。不过,这样的ChannelHandler必须使用@Sharable注解标注,保证它的线程安全性,否则试图将它注册到多个ChannelHandlerPipeline中时将会抛出异常。