- Dubbo Consumer的启动过程和Provider一样,以DubboNamespaceHandler为起点,去解析代码配置中的ReferenceBean。
1 | public class ReferenceBean<T> extends ReferenceConfig<T> implements FactoryBean, ApplicationContextAware, InitializingBean, DisposableBean { |
- ReferenceBean同样既继承了ReferenceConfig,又实现了InitializingBean。也是在afterProperitesSet()中去执行服务引用
- ReferenceBean
- afterPropertiesSet
- ReferenceConfig
- init()
- 完成service interface的class, methods解析
- 获取Service 注册中心registeries配置信息,用于向注册中西订阅service
- 检测是否配置有Dubbo Mock, Dubbo Stub
- createProxy()完成ReferenceConfig + Registeries ——》 Dubbo Service Invoker的转化。createProxy()返回时,返回的是被Proxy后的Invoker,即外层加了Dubbo Filter Chain。
- DubboProtocol.refer(…)
- init()
- ReferenceConfig
- afterPropertiesSet
- ReferenceBean
DubboProtocol
DubboProtocol.class 作为Dubbo RPC层的具体实现协议,尤其完成Consumer中向注册中心真正订阅的动作。
1 | public class DubboProtocol extends AbstractProtocol { |
Invoker
1 | public interface Invoker<T> extends Node { |
1 | public class DubboInvoker<T> extends AbstractInvoker<T> { |
ReferenceConfig 核心数据
1 | public class ReferenceConfig<T> extends AbstractReferenceConfig { |
ConsumerModel
经过ReferenceConfig一番处理后,最终会得到:Reference Dubbo Service Name, InvokerRef, Service Methods, ReferenceConfig Instance。
这些信息会封装成ConsumerModel,放到ApplicationModel.class中去全局统一记录Consumer的情况。
1 | public class ConsumerModel { |