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