From e419cac82924d0067afdf6bf85471df7c654ff04 Mon Sep 17 00:00:00 2001 From: flystar32 Date: Thu, 22 Aug 2019 11:37:40 +0800 Subject: [PATCH] support nacos discovery group --- .../cloud/nacos/NacosDiscoveryProperties.java | 37 ++++++++++++++----- .../nacos/discovery/NacosDiscoveryClient.java | 3 +- .../nacos/registry/NacosServiceRegistry.java | 7 +++- .../cloud/nacos/ribbon/NacosServerList.java | 3 +- 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java index 296975d14..34c453a57 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java @@ -65,7 +65,7 @@ public class NacosDiscoveryProperties { private static final Logger log = LoggerFactory .getLogger(NacosDiscoveryProperties.class); - + /** * nacos discovery server address. */ @@ -104,10 +104,15 @@ public class NacosDiscoveryProperties { private float weight = 1; /** - * cluster name for nacos server. + * cluster name for nacos . */ private String clusterName = "DEFAULT"; + /** + * group name for nacos + */ + private String group = "DEFAULT"; + /** * naming load from local cache at application start. true is load. */ @@ -395,25 +400,35 @@ public class NacosDiscoveryProperties { this.watchDelay = watchDelay; } + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + @Override public String toString() { return "NacosDiscoveryProperties{" + "serverAddr='" + serverAddr + '\'' + ", endpoint='" + endpoint + '\'' + ", namespace='" + namespace + '\'' + ", watchDelay=" + watchDelay + ", logName='" + logName + '\'' + ", service='" + service + '\'' + ", weight=" + weight - + ", clusterName='" + clusterName + '\'' + ", namingLoadCacheAtStart='" - + namingLoadCacheAtStart + '\'' + ", metadata=" + metadata - + ", registerEnabled=" + registerEnabled + ", ip='" + ip + '\'' - + ", networkInterface='" + networkInterface + '\'' + ", port=" + port - + ", secure=" + secure + ", accessKey='" + accessKey + '\'' - + ", secretKey='" + secretKey + '\'' + '}'; + + ", clusterName='" + clusterName + '\'' + ", group='" + group + '\'' + + ", namingLoadCacheAtStart='" + namingLoadCacheAtStart + '\'' + + ", metadata=" + metadata + ", registerEnabled=" + registerEnabled + + ", ip='" + ip + '\'' + ", networkInterface='" + networkInterface + '\'' + + ", port=" + port + ", secure=" + secure + ", accessKey='" + accessKey + + '\'' + ", secretKey='" + secretKey + '\'' + ", heartBeatInterval=" + + heartBeatInterval + ", heartBeatTimeout=" + heartBeatTimeout + + ", ipDeleteTimeout=" + ipDeleteTimeout + '}'; } public void overrideFromEnv(Environment env) { if (StringUtils.isEmpty(this.getServerAddr())) { String serverAddr = env.resolvePlaceholders("${spring.cloud.nacos.discovery.server-addr:}"); - if(StringUtils.isEmpty(serverAddr)) { + if (StringUtils.isEmpty(serverAddr)) { serverAddr = env.resolvePlaceholders("${spring.cloud.nacos.server-addr}"); } this.setServerAddr(serverAddr); @@ -442,6 +457,10 @@ public class NacosDiscoveryProperties { this.setEndpoint( env.resolvePlaceholders("${spring.cloud.nacos.discovery.endpoint:}")); } + if (StringUtils.isEmpty(this.getGroup())) { + this.setGroup( + env.resolvePlaceholders("${spring.cloud.nacos.discovery.group:}")); + } } public NamingService namingServiceInstance() { diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClient.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClient.java index 8a54b7d82..e4302e80f 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClient.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClient.java @@ -54,8 +54,9 @@ public class NacosDiscoveryClient implements DiscoveryClient { @Override public List getInstances(String serviceId) { try { + String group = discoveryProperties.getGroup(); List instances = discoveryProperties.namingServiceInstance() - .selectInstances(serviceId, true); + .selectInstances(serviceId, group, true); return hostToServiceInstanceList(instances, serviceId); } catch (Exception e) { throw new RuntimeException( diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java index 6a88b1d1b..e28f8500d 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java @@ -54,11 +54,12 @@ public class NacosServiceRegistry implements ServiceRegistry { } String serviceId = registration.getServiceId(); + String group = nacosDiscoveryProperties.getGroup(); Instance instance = getNacosInstanceFromRegistration(registration); try { - namingService.registerInstance(serviceId, instance); + namingService.registerInstance(serviceId, group, instance); log.info("nacos registry, {} {}:{} register finished", serviceId, instance.getIp(), instance.getPort()); } @@ -80,9 +81,10 @@ public class NacosServiceRegistry implements ServiceRegistry { NamingService namingService = nacosDiscoveryProperties.namingServiceInstance(); String serviceId = registration.getServiceId(); + String group = nacosDiscoveryProperties.getGroup(); try { - namingService.deregisterInstance(serviceId, registration.getHost(), + namingService.deregisterInstance(serviceId, group, registration.getHost(), registration.getPort(), nacosDiscoveryProperties.getClusterName()); } catch (Exception e) { @@ -153,6 +155,7 @@ public class NacosServiceRegistry implements ServiceRegistry { instance.setWeight(nacosDiscoveryProperties.getWeight()); instance.setClusterName(nacosDiscoveryProperties.getClusterName()); instance.setMetadata(registration.getMetadata()); + return instance; } diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java index fcb4ef4b0..d85ec353f 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java @@ -52,8 +52,9 @@ public class NacosServerList extends AbstractServerList { private List getServers() { try { + String group = discoveryProperties.getGroup(); List instances = discoveryProperties.namingServiceInstance() - .selectInstances(serviceId, true); + .selectInstances(serviceId, group,true); return instancesToServerList(instances); } catch (Exception e) {