public void onEvent()

in mode/cluster/repository/nacos/src/main/java/org/apache/shardingsphere/mode/repository/cluster/nacos/listener/NamingEventListener.java [47:73]


    public void onEvent(final Event event) {
        if (!(event instanceof NamingEvent)) {
            return;
        }
        NamingEvent namingEvent = (NamingEvent) event;
        Collection<Instance> instances = namingEvent.getInstances().stream().sorted(Comparator.comparing(NacosMetaDataUtils::getKey)).collect(Collectors.toList());
        Collection<WatchData> watchDataList = new LinkedList<>();
        synchronized (this) {
            instances.forEach(instance -> prefixListenerMap.forEach((prefixPath, listener) -> {
                String key = NacosMetaDataUtils.getKey(instance);
                if (key.startsWith(prefixPath)) {
                    Instance preInstance = preInstances.remove(key);
                    WatchData watchData = new WatchData(key, preInstance, instance, listener);
                    watchDataList.add(watchData);
                }
            }));
            preInstances.values().stream().sorted(Comparator.comparing(NacosMetaDataUtils::getKey).reversed()).forEach(instance -> prefixListenerMap.forEach((prefixPath, listener) -> {
                String key = NacosMetaDataUtils.getKey(instance);
                if (key.startsWith(prefixPath)) {
                    WatchData watchData = new WatchData(key, instance, null, listener);
                    watchDataList.add(watchData);
                }
            }));
            watchDataList.forEach(this::watch);
            setPreInstances(instances);
        }
    }