Netty-10 ChannelPipeline和ChannelHandler

本文深入探讨Netty的ChannelPipeline和ChannelHandler。ChannelPipeline作为ChannelHandler的容器,负责事件拦截和调度。ChannelHandler类似Servlet Filter,用于自定义逻辑。文章详细阐述了ChannelPipeline的事件处理流程、I/O事件分类、继承体系,以及ChannelHandler的功能、注解支持、系统预置和用户自定义实现。
摘要由CSDN通过智能技术生成

Netty中的ChannelPipeline和ChannelHandler机制类似于Servlet和Filter过滤器,这类拦截器实际上是责任链模式的一种变种,主要是为了方便事件的拦截和用户自定义逻辑的定义。

一、ChannelPipeline

(一)简单介绍

ChannelPipeline是ChannelHandler的容器,它负责ChannelHandler的管理和事件拦截与调度;

(二)事件处理

在这里插入图片描述
上图展示了一个消息被ChannelPipeline的ChannelHandler链拦截和处理的全过程 这个图是在ChannelPipeline里面截取出来的

  1. 底层的SocketChannel.read()方法读取ByteBuf,触发ChannelRead方法,由I/O线程NioEventLoop调用ChannelPipeline的fireChannelRead(Object msg)方法,将消息传送到ChannelPipeline中;
  2. 消息依次被ChannelHandler1、ChannelHandler2、…等等进行拦截和处理,在这个过程中,任何ChannelHandler都可以中断流程来结束消息的传递;
  3. 写出消息,依次被这些ChannelHandler进行处理;
  4. 我们发现,读取信息的时候,触发的是InboundHandler,写数据的时候,触发的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值