ChannelPipeline和ChannelHandler
# ChannelPipeline和ChannelHandler
ChannelPipeline是对Channel的封装,ChannelPipeline持有时间拦截器ChannelHandler的链表,由ChannelHandler对I/O事件拦截和处理,可以通过新增和删除ChannelHandler来实现不同业务的逻辑定制。
# 17.1 ChannelPipeline的功能说明
ChannelPipeline是ChannelHandler的容器,负责ChannelHandler的管理和事件拦截 17.1.1 ChannelPipeline的事件处理 Netty中的事件分为inbound和outbound事件 inbound事件通常由IO线程触发,如tcp连接建立、断开、异常通知等 outbound事件通常是由用户主动发起的网络IO操作,如用户发起的绑定本地地址,发送消息等 17.1.2 自定义拦截器 通常ChannelHandler只需要继承ChannelHandlerAdapter类覆盖自己关心的方法即可。 17.1.3 ChannelPipeline的主要特性 ChannelPipeline支持动态添加或者删除ChannelHandler。使用场景(业务高峰期加入拥塞保护ChannelHandler,高峰过后删掉ChannelHandler)。 ChannelPipeline是线程安全的,但是ChannelHandler不是线程安全的。
# 17.1 ChannelPipeline源码
实际上是ChannelHandler 的容器,内部维护了一个ChannelHandler链表和迭代器。
编辑 (opens new window)
上次更新: 2022/05/22, 00:01:01