diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-client-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-client-sample/pom.xml index c37db212..1a675b43 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-client-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-client-sample/pom.xml @@ -10,7 +10,6 @@ 4.0.0 - com.alibaba.cloud spring-cloud-dubbo-client-sample Spring Cloud Dubbo Client Sample diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-client-sample/src/main/resources/bootstrap.yaml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-client-sample/src/main/resources/bootstrap.yaml index 6801b6c4..19d22ad1 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-client-sample/src/main/resources/bootstrap.yaml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-client-sample/src/main/resources/bootstrap.yaml @@ -12,7 +12,11 @@ spring: allow-bean-definition-overriding: true cloud: nacos: - username: nacos - password: nacos discovery: - server-addr: 127.0.0.1:8848 \ No newline at end of file + username: nacos + password: nacos + server-addr: 127.0.0.1:8848 + namespace: public + +server: + port: 8080 \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-server-sample/src/main/resources/bootstrap.yaml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-server-sample/src/main/resources/bootstrap.yaml index 650b9861..db7e38c0 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-server-sample/src/main/resources/bootstrap.yaml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-server-sample/src/main/resources/bootstrap.yaml @@ -1,4 +1,6 @@ dubbo: + cloud: + subscribed-services: ${spring.application.name} scan: base-packages: com.alibaba.cloud.dubbo.bootstrap protocol: 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 a1882394..f02ebe1a 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 @@ -46,7 +46,6 @@ import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.context.ApplicationListener; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.event.ContextRefreshedEvent; import static com.alibaba.cloud.dubbo.metadata.repository.DubboServiceMetadataRepository.EXPORTED_SERVICES_REVISION_PROPERTY_NAME; import static java.util.Collections.emptyList; @@ -118,9 +117,6 @@ public class DubboCloudRegistry extends FailbackRegistry this.applicationContext = applicationContext; this.dubboMetadataUtils = getBean(DubboMetadataUtils.class); this.reSubscribeManager = new ReSubscribeManager(this); - - applicationContext.addApplicationListener( - (ApplicationListener) event -> preInit()); } private void preInit() { @@ -154,7 +150,8 @@ public class DubboCloudRegistry extends FailbackRegistry urlSubscribeHandlerMap.forEach((url, handler) -> handler.init()); repository.initializeMetadata(); - // meke sure everything prepared, then can listening ServiceInstanceChangeEvent + // meke sure everything prepared, then can listening + // ServiceInstanceChangeEvent applicationContext.addApplicationListener(this); logger.info("DubboCloudRegistry preInit Done."); @@ -165,39 +162,50 @@ public class DubboCloudRegistry extends FailbackRegistry return this.applicationContext.getBean(beanClass); } - protected boolean shouldRegister(URL url) { + protected boolean shouldNotRegister(URL url) { String side = url.getParameter(SIDE_KEY); boolean should = PROVIDER_SIDE.equals(side); // Only register the Provider. - if (!should) { - if (logger.isDebugEnabled()) { - logger.debug("The URL[{}] should not be registered.", url.toString()); + if (logger.isDebugEnabled()) { + if (!should) { + logger.debug("The URL should NOT!! be registered & unregistered [{}] .", + url); + } + else { + logger.debug("The URL should be registered & unregistered [{}] .", url); } } - return should; + return !should; } @Override public final void doRegister(URL url) { - if (!shouldRegister(url)) { - return; + synchronized (this) { + preInit(); + if (shouldNotRegister(url)) { + return; + } + repository.exportURL(url); } - repository.exportURL(url); } @Override public final void doUnregister(URL url) { - if (!shouldRegister(url)) { - return; + synchronized (this) { + preInit(); + if (shouldNotRegister(url)) { + return; + } + repository.unexportURL(url); } - repository.unexportURL(url); } @Override public final void doSubscribe(URL url, NotifyListener listener) { synchronized (this) { + preInit(); if (isAdminURL(url)) { // TODO in future if (logger.isWarnEnabled()) { @@ -452,7 +460,7 @@ public class DubboCloudRegistry extends FailbackRegistry return metadata.containsKey(METADATA_SERVICE_URLS_PROPERTY_NAME); } - Set getServices(URL url) { + private Set getServices(URL url) { Set subscribedServices = repository.getSubscribedServices(); if (subscribedServices.contains("*")) { subscribedServices = new HashSet<>(discoveryClient.getServices());