public void onEvent()

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);
                    }
                }
            }
        }
    }