Netty源码分析之ChannelPipeline(一)—ChannelPipeline的构造与初始化

Java54

Netty中ChannelPipeline实际上类似与一条数据管道,负责传递Channel中读取的消息,它本质上是基于责任链模式的设计与实现,无论是IO事件的拦截器,还是用户自定义的ChannelHandler业务逻辑都做为一个个节点被添加到任务链上。

一、ChannelPipeline的设计与构成

ChannelPipeline中作为Netty中的数据管道,作用就是通过控制与联通不同的ChannelHandler,传递Channel中的消息。每一个Channel,都对应一个ChannelPipeline作为ChannelHandler的容器,而ChannelHandlerContext则把ChannelHandler的封装成每个节点,以双向链表方式在容器中存在;我们可以通过下图简单看下它们之间的关系。

Netty源码分析之ChannelPipeline(一)—ChannelPipeline的构造与初始化

1、ChannelHandler

使用过Netty的朋友们都清楚,ChannelHandler就是作为拦截器和业务处理逻辑的存在,它会处理Channel中读写的消息;

首先看下ChannelHandler接口的定义

```
public interface ChannelHandler {

//当ChannelHandler添加到Pipeline中时调用
void handlerAdded(ChannelHandlerContext ctx) throws Exception;
输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
线程池面试必考 Java

线程池面试必考

你对Java线程池了解吗?你有用过线程池吗?那先说下线程池核心参数吧。。。对不起,我回去再看看吧。 为了得体,今天让我们来整理一下面试线索池中的几个面试问题。[En]In order to be de...
JAVA 线程的6种状态 Java

JAVA 线程的6种状态

线程状态(Thread.State)。线程处于下列状态的其中之一。 一个线程一次只能有一个状态。这些状态是虚拟机线程状态,不能反映任何操作系统的线程状态。[En]A thread can only h...
Java8 提供的流式操作 Java

Java8 提供的流式操作

参考资料 流式操作 Stream 代表一个支持串行或并行聚集操作的元素序列。 filter filter 生成一个新的 Stream,该 Stream 所有元素都满足 predicate.test =...
实现get/post请求调用第三方接口 Java

实现get/post请求调用第三方接口

使用http协议中的get以及post方式对接第三方平台在工作中很常见,我所展示的已是将方法归纳好,只需要按照对接方案传递对应的参数即可。 下载地址 https://download.csdn.net...
一致性hash算法 Java

一致性hash算法

一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈...
JVM的类加载过程 Java

JVM的类加载过程

如果可以,请让我们慢慢了解,慢慢喜欢。 The frog in the well knows nothing of the great ocean. 井底之蛙,不知大海。 JVM 的类加载分为五个阶段...
从IO到netty Java

从IO到netty

一、pageCache 1.FileOutputStream与BufferedOutputStream的主要区别 系统调&#x...
springboot-02 Java

springboot-02

Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson 。 Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。 为了降低Java开发的...
Oracle SQL Developer 安装 Java

Oracle SQL Developer 安装

参考资料 说在前面 什么是 SQL Developer? window 7 安装步骤 官方推荐配置 1 下载安装包 2 解压 3 启动 其他 1 如何找到其他版本的安装包下载页面? 参考资料 软件首页...
20 HTTP 长连接与短连接 Java

20 HTTP 长连接与短连接

纸上得来终觉浅,绝知此事要躬行。 Never give up until the fight is over. 永远不要放弃,要一直战斗到最后一秒。 长连接 指在一个TCP连接上可以连续发送多个数据包...