前言
本文主要介绍Dubbo
服务引入——服务监听部分,服务监听是监听服务的变动,比如提供者服务变动(新增、移除等)以及服务路由、动态配置的变动等。
正文
服务监听的代码位于RegistryProtocol#doCreateInvoker
方法中。
protected <T> ClusterInvoker<T> doCreateInvoker(DynamicDirectory<T> directory, Cluster cluster, Registry registry, Class<T> type) {
directory.setRegistry(registry);
// ... 删除部分代码
directory.buildRouterChain(urlToRegistry);
directory.subscribe(toSubscribeUrl(urlToRegistry));
return (ClusterInvoker<T>) cluster.join(directory);
}
复制代码
在该方法中有两处监听的设置,分别为buildRouterChain
和subscribe
。
buildRouterChain
从上一篇我们了解到在构造路由链时,会初始化4个类,分别为:MockRouterFactory
、 TagRouterFactory
、AppRouterFactory
、ServiceRouterFactory
,这几个工厂类中产生的实例对象中就有服务监听的处理逻辑。
buildRouterChain
方法主要作用为构造路由链,路由链是动态服务目