千家信息网

Netty分布式监听读事件的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下Netty分布式监听读事件的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们回到Abstrac
千家信息网最后更新 2026年11月01日Netty分布式监听读事件的示例分析

小编给大家分享一下Netty分布式监听读事件的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

我们回到AbstractUnsafe的register0()方法:

private void register0(ChannelPromise promise) {    try {        //省略代码        //做实际的注册        doRegister();        neverRegistered = false;        registered = true;        //触发事件        pipeline.invokeHandlerAddedIfNeeded();        safeSetSuccess(promise);        //触发注册成功事件        pipeline.fireChannelRegistered();        if (isActive()) {            if (firstRegistration) {                //传播active事件(4)                pipeline.fireChannelActive();            } else if (config().isAutoRead()) {                beginRead();            }        }    } catch (Throwable t) {        //省略代码    }}

doRegister()做完实际的注册之后, 会走到if (isActive())这个判断, 因为这个时候链路已经完成, 所以这里是true, 默认判断条件if (firstRegistration)也为true, 所以这里会走到pipeline.fireChannelActive()这一步

有关pipeline我们会在下一章进行详细分析, 这里我们只需要知道, 最后会流转到AbstractUnsafe的beginRead()方法

跟到beginRead()方法:

public final void beginRead() {    assertEventLoop();    if (!isActive()) {        return;    }    try {        doBeginRead();    } catch (final Exception e) {        //代码省略    }}

这块代码同样我们也不陌生, 因为我们分析NioServerSocketChannel也分析过了这一步

我们继续跟到doBeginRead():

protected void doBeginRead() throws Exception {    //拿到selectionKey    final SelectionKey selectionKey = this.selectionKey;    if (!selectionKey.isValid()) {        return;    }    readPending = true;    //获得感兴趣的事件    final int interestOps = selectionKey.interestOps();    //判断是不是对任何事件都不监听    if ((interestOps & readInterestOp) == 0) {        //此条件成立        //将之前的accept事件注册, readInterest代表可以读取一个新连接的意思        selectionKey.interestOps(interestOps | readInterestOp);    }}

这段代码相信大家会比较熟悉, 因为我们服务端channel注册完之后也走到了这里

因为我们在创建NioSocketChannel的时候初始化的是read事件, selectionKey是channel在注册时候返回的key, 所以selectionKey.interestOps(interestOps | readInterestOp)这一步, 会将当前channel的读事件注册到selector中去

注册完成之后, NioEventLoop就可以轮询当前channel的读事件了

以上是"Netty分布式监听读事件的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

事件 分析 代码 监听 方法 时候 篇文章 分布式 示例 内容 实际 条件 陌生 成功 不怎么 代表 兴趣 大部分 意思 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 亿人帮互联网科技有限公司 广东猪兼强互联网科技有限公司 科技互联网龙头 中国互联网科技股 金融科技创新监管互联网金融 万易互联网科技 深圳互联网络科技有限公司 互联网金融科技平台 上游互联网科技 互联网科技大会案例 天速互联网络科技有限公司 互联网科技中介 互联网媒体平台算高科技产业 深圳育鹏互联网科技有限公司招聘 允成互联网科技有限公司融资 威龙国际互联网科技公司 徐州市互联网科技有限公司 互联网科技快速发展优美句子 小牛互联网科技有限公司地址 金融科技创新监管互联网金融 朗涯互联网科技 互联网科技博主是什么意思 燊美集互联网科技有限公司 华夏恒生互联网科技013171 互联网科技资金流入 浙南科技城互联网大厦招聘 北京品多多互联网科技有限公司 上海互联网科技园景观 银川新华互联网科技学校招聘
0