Netty--ChannelPipeline

1:是ChannelHandler的集合
2:是一种拦截器过滤器模式的高级实现
3:给用户所有的控制权来控制一个event在handler中是如何被handle的,并且清楚的告诉你在pipeline中各个handler是如何相互影响的。
4:一个pipeline是在一个channel被建立的同时自动被建立的,且是这个channel唯一的。
5:数据流向
在这里插入图片描述

在ChannelHandlerContext上下文中定义的inboundHandler或者outBoundHandler的顺序,处理器,要么是inbound要么是 outbound,通过顺序调用定义好的处理器,然后转发到最近的下一个处理器中。

6:inbound一般从远程获取,类似SocketChannel中的read(bytebuffer)方法,一般是自底而上的去按过滤器链的那种方式去调用inboundhandler,执行过滤到最顶层,这个事件就会被默默丢弃,或者当你需要关注这类事件时,将他记录在日志中。
7:outbound则和inbound相反是自上而下去执行。
8:在pipleline.addLast(order,handler)这个方法中可以配置执行顺序,inbound (1->5),outbound相反。
9:inbound和outbound的传播触发机制都不相同,inbound一般是以fire开头的,而其他触发方法都是outbound的。
10:正常来讲一个pipeline至少会有编解码的处理器,还有业务逻辑的处理器,复杂度取决于业务逻辑的复杂程度。
11:你还可以通过pipeline.addLast(group, “handler”, new MyBusinessLogicHandler()),来给你的业务逻辑制定执行group。

猜你喜欢

转载自blog.csdn.net/weixin_39781526/article/details/89021730