You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/03/02 05:14:22 UTC

[dubbo] branch master updated: [ISSUE-#7089] NacosRegistry register instance support PreservedMetadataKeys (#7090)

This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new 34b744b  [ISSUE-#7089] NacosRegistry register instance support PreservedMetadataKeys (#7090)
34b744b is described below

commit 34b744b55853f57fa1b7562c5de803c87d8541bd
Author: 赵延 <10...@qq.com>
AuthorDate: Tue Mar 2 13:13:38 2021 +0800

    [ISSUE-#7089] NacosRegistry register instance support PreservedMetadataKeys (#7090)
    
    * NacosRegistry register instance support PreservedMetadataKeys
    
    * nacosServiceDiscovery and nacosRegistry support nacos NacosPreservedParam to control the instance.
---
 .../apache/dubbo/registry/nacos/NacosRegistry.java |  8 +++++---
 .../registry/nacos/NacosServiceDiscovery.java      |  7 +++++++
 .../nacos/util/NacosNamingServiceUtils.java        | 22 ++++++++++++++++++++++
 3 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
index 4d25bc1..185c3de 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
@@ -17,8 +17,6 @@
 package org.apache.dubbo.registry.nacos;
 
 
-import com.alibaba.nacos.api.common.Constants;
-import com.google.common.collect.Lists;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.URLBuilder;
 import org.apache.dubbo.common.logger.Logger;
@@ -28,14 +26,17 @@ import org.apache.dubbo.common.utils.UrlUtils;
 import org.apache.dubbo.registry.NotifyListener;
 import org.apache.dubbo.registry.Registry;
 import org.apache.dubbo.registry.nacos.util.NacosInstanceManageUtil;
+import org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils;
 import org.apache.dubbo.registry.support.FailbackRegistry;
 
+import com.alibaba.nacos.api.common.Constants;
 import com.alibaba.nacos.api.exception.NacosException;
 import com.alibaba.nacos.api.naming.NamingService;
 import com.alibaba.nacos.api.naming.listener.EventListener;
 import com.alibaba.nacos.api.naming.listener.NamingEvent;
 import com.alibaba.nacos.api.naming.pojo.Instance;
 import com.alibaba.nacos.api.naming.pojo.ListView;
+import com.google.common.collect.Lists;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -553,6 +554,7 @@ public class NacosRegistry extends FailbackRegistry {
         URL newURL = url.addParameter(CATEGORY_KEY, category);
         newURL = newURL.addParameter(PROTOCOL_KEY, url.getProtocol());
         newURL = newURL.addParameter(PATH_KEY, url.getPath());
+        newURL = newURL.addParameters(NacosNamingServiceUtils.getNacosPreservedParam(getUrl()));
         String ip = url.getHost();
         int port = url.getPort();
         Instance instance = new Instance();
@@ -622,4 +624,4 @@ public class NacosRegistry extends FailbackRegistry {
         void callback(NamingService namingService) throws NacosException;
 
     }
-}
\ No newline at end of file
+}
diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
index a1067f7..d79ab1e 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java
@@ -34,6 +34,7 @@ import com.alibaba.nacos.api.naming.pojo.ListView;
 
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -75,6 +76,7 @@ public class NacosServiceDiscovery extends AbstractServiceDiscovery {
         super.register(serviceInstance);
         execute(namingService, service -> {
             Instance instance = toInstance(serviceInstance);
+            appendPreservedParam(instance);
             service.registerInstance(instance.getServiceName(), group, instance);
         });
     }
@@ -147,4 +149,9 @@ public class NacosServiceDiscovery extends AbstractServiceDiscovery {
                 .collect(Collectors.toList());
         dispatchServiceInstancesChangedEvent(serviceName, serviceInstances);
     }
+
+    private void appendPreservedParam(Instance instance) {
+        Map<String, String> preservedParam = NacosNamingServiceUtils.getNacosPreservedParam(getUrl());
+        instance.getMetadata().putAll(preservedParam);
+    }
 }
diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java
index cdfcf8a..893cccb 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java
@@ -27,9 +27,11 @@ import com.alibaba.nacos.api.NacosFactory;
 import com.alibaba.nacos.api.PropertyKeyConst;
 import com.alibaba.nacos.api.exception.NacosException;
 import com.alibaba.nacos.api.naming.NamingService;
+import com.alibaba.nacos.api.naming.PreservedMetadataKeys;
 import com.alibaba.nacos.api.naming.pojo.Instance;
 import com.alibaba.nacos.api.naming.utils.NamingUtils;
 
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
@@ -163,4 +165,24 @@ public class NacosNamingServiceUtils {
             properties.setProperty(propertyName, defaultValue);
         }
     }
+
+    public static Map<String, String> getNacosPreservedParam(URL registryUrl) {
+        Map<String, String> map = new HashMap<>();
+        if (registryUrl.getParameter(PreservedMetadataKeys.REGISTER_SOURCE) != null) {
+            map.put(PreservedMetadataKeys.REGISTER_SOURCE, registryUrl.getParameter(PreservedMetadataKeys.REGISTER_SOURCE));
+        }
+        if (registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_TIMEOUT) != null) {
+            map.put(PreservedMetadataKeys.HEART_BEAT_TIMEOUT, registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_TIMEOUT));
+        }
+        if (registryUrl.getParameter(PreservedMetadataKeys.IP_DELETE_TIMEOUT) != null) {
+            map.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT, registryUrl.getParameter(PreservedMetadataKeys.IP_DELETE_TIMEOUT));
+        }
+        if (registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_INTERVAL) != null) {
+            map.put(PreservedMetadataKeys.HEART_BEAT_INTERVAL, registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_INTERVAL));
+        }
+        if (registryUrl.getParameter(PreservedMetadataKeys.INSTANCE_ID_GENERATOR) != null) {
+            map.put(PreservedMetadataKeys.INSTANCE_ID_GENERATOR, registryUrl.getParameter(PreservedMetadataKeys.INSTANCE_ID_GENERATOR));
+        }
+        return map;
+    }
 }