Netty中的ChannelPipeline
是事件处理链的核心组件,负责将多个ChannelHandler
组织成有序的责任链,实现网络事件(如数据读写、连接状态变化)的动态编排和传播。以下从核心机制、执行逻辑到应用场景进行详细解析:
1. 核心结构与组成
双向链表结构
- 组成单元:
ChannelPipeline
内部维护了一个双向循环链表,每个节点是ChannelHandlerContext
对象,封装了ChannelHandler
、Channel
和Pipeline
的关联信息。 - 默认节点:
- HeadContext:链表头节点,既是
ChannelInboundHandler
也是ChannelOutboundHandler
,负责将I/O事件转发给底层Unsafe
处理。 - TailContext:链表尾节点
- HeadContext:链表头节点,既是