-
服务发布的原理
由前一章节我们可以知道,dubbo指定了DubboNamespaceHandler来处理配置文件中dubbo命名空间声明的bean.其中有个ServiceBean,如下图,
spring容器在启动的过程中会将自定义的schema元素dubbo:Service转换成实际的配置实现ServiceBean,该类除了继承dubbo自己的配置抽象类以外,还实现了一系列的spring接口用来参与到spring容器的启动以及bean的创建过程中去,现在我们暂时只关注它实现的ApplicationListener接口——通过该接口,ServiceBean实现了对ContextRefreshedEvent事件的监听,当Spring在初始化后调用Refresh方法时会触发ContextRefreshedEvent事件,所以ServiceBean的onApplicationEvent(ApplicationEvent event)方法被触发,在这个方法中通过调用export方法来暴露服务,在这期间会做一些检查,如果发现XML中并没有配置某些项,则加载dubbo.properties中的配置,然后再调用doExportUrls方法做服务暴露,所以我们应该重点关照这方法。
loadRegistries(true)
加载注册中心并统一构建成List<URL>集合
for (ProtocolConfig protocolConfig : protocols) {
doExportUrlsFor1Protocol(protocolConfig, registryURLs);
}
因为dubbo支持多协议配置,遍历所有协议分别根据不同的协议把服务export到不同的注册中心上去
dubbo学习(三)-dubbo的服务发布
最新推荐文章于 2022-12-13 21:15:15 发布