private void watchHealthService() {
        try {
            HealthServicesRequest request = HealthServicesRequest.newBuilder()
                    .setTag(tag)
                    .setQueryParams(new QueryParams(properties.getWatchTimeout(), currentData.getConsulIndex()))
                    .setToken(properties.getToken())
                    .setPassing(true)
                    .build();
            Response<List<HealthService>> response = consulClient.getHealthServices(serviceName, request);
            if (response.getConsulIndex().equals(currentData.getConsulIndex())) {
                return;
            }
            this.currentData = response;
            ProviderGroup providerGroup = new ProviderGroup(currentProviders());
            listeners.stream().filter(Objects::nonNull).forEach(l -> l.updateProviders(providerGroup));
        } catch (Exception e) {
            LOGGER.error(LogCodes.getLog(LogCodes.ERROR_WATCH_HEALTH ,"Consul"), e);
        }
    }
Observe the providers from consul and notify the consumers

@author <a href=mailto:scienjus@gmail.com>ScienJus</a>
registry/registry-consul/src/main/java/com/alipay/sofa/rpc/registry/consul/HealthServiceInformer.java