diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/metadata/repository/DubboServiceMetadataRepository.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/metadata/repository/DubboServiceMetadataRepository.java index 7e85e624..8b687cd1 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/metadata/repository/DubboServiceMetadataRepository.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/metadata/repository/DubboServiceMetadataRepository.java @@ -245,6 +245,7 @@ public class DubboServiceMetadataRepository @Override public void afterSingletonsInstantiated() { + // inited by DubboCloudRegistry.preInit() @theonefx // initializeMetadata(); } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/DubboCloudRegistry.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/DubboCloudRegistry.java index 1fe83183..a1882394 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/DubboCloudRegistry.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/registry/DubboCloudRegistry.java @@ -42,7 +42,6 @@ import org.apache.dubbo.registry.support.FailbackRegistry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.context.ApplicationListener; @@ -154,6 +153,8 @@ public class DubboCloudRegistry extends FailbackRegistry metadataSubscribeHandlerMap.forEach((url, handler) -> handler.init()); urlSubscribeHandlerMap.forEach((url, handler) -> handler.init()); repository.initializeMetadata(); + + // meke sure everything prepared, then can listening ServiceInstanceChangeEvent applicationContext.addApplicationListener(this); logger.info("DubboCloudRegistry preInit Done."); @@ -235,8 +236,9 @@ public class DubboCloudRegistry extends FailbackRegistry String appName = event.getServiceName(); - List instances = filter(event.getServiceInstances() != null - ? event.getServiceInstances() : Collections.emptyList()); + List instances = filter( + event.getServiceInstances() != null ? event.getServiceInstances() + : Collections.emptyList()); Set subscribedServiceNames = getServices(null);