From c419c1ef5d65b9247044836cdb3455e7fe8c8588 Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Wed, 2 Sep 2020 10:48:44 +0800 Subject: [PATCH] =?UTF-8?q?Polish=20alibaba/spring-cloud-alibaba#1529=20:?= =?UTF-8?q?=20spring-cloud-starter-dubbo=E6=B6=88=E8=B4=B9=E8=80=85?= =?UTF-8?q?=E8=AE=A2=E9=98=85=E6=9C=8D=E5=8A=A1=E6=97=B6No=20provider=20av?= =?UTF-8?q?ailable=20from=20registry=20localhost:9090?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dubbo/registry/DubboCloudRegistry.java | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) 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 311dd2686..9cfdccd92 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 @@ -51,7 +51,6 @@ import org.springframework.util.CollectionUtils; import static java.lang.String.format; import static java.util.Collections.emptyList; -import static java.util.Collections.singleton; import static java.util.stream.StreamSupport.stream; import static org.apache.dubbo.common.URLBuilder.from; import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY; @@ -437,19 +436,19 @@ public class DubboCloudRegistry extends FailbackRegistry { // Sync subscription subscribeDubboMetadataServiceURLs(subscribedURL, listener, - singleton(getServiceName(subscribedURL))); + getServiceName(subscribedURL)); // Sync subscription if (containsProviderCategory(subscribedURL)) { registerServiceInstancesChangedListener(subscribedURL, event -> { - Set serviceNames = getServices(subscribedURL); + String sourceServiceName = event.getServiceName(); + String serviceName = getServiceName(subscribedURL); - if (!serviceNames.contains(event.getServiceName())) { - return; + if (Objects.equals(sourceServiceName, serviceName)) { + subscribeDubboMetadataServiceURLs(subscribedURL, listener, + sourceServiceName); } - - subscribeDubboMetadataServiceURLs(subscribedURL, listener, serviceNames); }); } } @@ -459,13 +458,13 @@ public class DubboCloudRegistry extends FailbackRegistry { } private void subscribeDubboMetadataServiceURLs(URL subscribedURL, - NotifyListener listener, Set serviceNames) { + NotifyListener listener, String serviceName) { String serviceInterface = subscribedURL.getServiceInterface(); String version = subscribedURL.getParameter(VERSION_KEY); String protocol = subscribedURL.getParameter(PROTOCOL_KEY); - List serviceInstances = getServiceInstances(serviceNames); + List serviceInstances = getServiceInstances(serviceName); List urls = dubboMetadataUtils.getDubboMetadataServiceURLs(serviceInstances, serviceInterface, version, protocol); @@ -473,6 +472,21 @@ public class DubboCloudRegistry extends FailbackRegistry { notifyAllSubscribedURLs(subscribedURL, urls, listener); } + // private void subscribeDubboMetadataServiceURLs(URL subscribedURL, + // NotifyListener listener, Set serviceNames) { + // + // String serviceInterface = subscribedURL.getServiceInterface(); + // String version = subscribedURL.getParameter(VERSION_KEY); + // String protocol = subscribedURL.getParameter(PROTOCOL_KEY); + // + // List serviceInstances = getServiceInstances(serviceNames); + // + // List urls = dubboMetadataUtils.getDubboMetadataServiceURLs(serviceInstances, + // serviceInterface, version, protocol); + // + // notifyAllSubscribedURLs(subscribedURL, urls, listener); + // } + private boolean containsProviderCategory(URL subscribedURL) { String category = subscribedURL.getParameter(CATEGORY_KEY); return category == null ? false : category.contains(PROVIDER);