in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminMappingListener.java [76:107]
public void onEvent(MappingChangedEvent event) {
Set<String> apps = event.getApps();
if (CollectionUtils.isEmpty(apps)) {
return;
}
for (String serviceName : apps) {
ServiceInstancesChangedListener serviceInstancesChangedListener = serviceListeners.get(serviceName);
if (serviceInstancesChangedListener == null) {
synchronized (this) {
serviceInstancesChangedListener = serviceListeners.get(serviceName);
if (serviceInstancesChangedListener == null) {
AddressChangeListener addressChangeListener = new DefaultAddressChangeListener(serviceName, instanceRegistryCache);
serviceInstancesChangedListener = new AdminServiceInstancesChangedListener(Sets.newHashSet(serviceName), serviceDiscovery, addressChangeListener);
// serviceInstancesChangedListener.setUrl(CONSUMER_URL);
List<ServiceInstance> allInstances = new ArrayList<>();
List<ServiceInstance> serviceInstances = serviceDiscovery.getInstances(serviceName);
if (serviceDiscovery instanceof NacosServiceDiscovery) {
List<ServiceInstance> consumerInstances = convertToInstance(NacosOpenapiUtil.getSubscribeAddressesWithHttpEndpoint(serviceDiscovery.getUrl(), serviceName));
allInstances.addAll(consumerInstances);
}
if (CollectionUtils.isNotEmpty(serviceInstances)) {
allInstances.addAll(serviceInstances);
serviceInstancesChangedListener.onEvent(new ServiceInstancesChangedEvent(serviceName, allInstances));
}
serviceListeners.put(serviceName, serviceInstancesChangedListener);
// serviceInstancesChangedListener.setUrl(CONSUMER_URL);
serviceDiscovery.addServiceInstancesChangedListener(serviceInstancesChangedListener);
}
}
}
}
}