如果你看了之前的源码分析的话,可以看看这篇总结:
消息通知总结
上图是一个事件从new出来到被执行的整套流程,结合之前几篇文章,再次梳理一遍整个流程:
⚡️ 首先,比如一个服务注册事件,会经过NotifyCenter的静态方法publishEvent来发布一个事件
⚡️ 然后会根据该事件的全限定类名,去NotifyCenter内部的publishMap中找到这个事件所对应的事件发布者
⚡️ 这个时候调用事件发布者的 offer方法向阻塞队列 queue 中添加事件,来暂存消息
⚡️ 同时呢,事件发布者也是一个线程,在其被new出来的同时,就被调用了start方法,开始一直从阻塞队列中取事件
⚡️ 当取出事件后,handleEvent就会拿到其事件的Class的类型,然后再在其内部的subscribes中取出订阅了这个事件类型的所有的订阅者们
⚡️ 最后再判断这个订阅者针对这个事件是需要同步方式还是异步方式处理事件
⚡️ 调用订阅者的onEvent(T event)方法,事件执行的落地点
Nacos源码篇
【Nacos源码篇(一)】Nacos源码本地环境搭建【Nacos源码篇(二)】Nacos的事件通知机制【Nacos源码篇(三)】NotifyCenter源码剖析【Nacos源码篇(四)】EventPublisher源码分析【Nacos源码篇(五)】Subscriber源码分析
语雀版文档
事件通知
事件通知核心流程NotifyCenter源码分析EventPublisher源码分析Subscriber源码分析Event源码分析消息通知总结
Nacos源码注释