From ad8938d4919c1baaa2b660672d29c5684e3712a9 Mon Sep 17 00:00:00 2001 From: Olga Maciaszek-Sharma Date: Mon, 10 Sep 2018 19:42:59 +0200 Subject: [PATCH] Gh 304 add discovery clients order support (#446) NOTE: This can only be merged after https://github.com/spring-cloud/spring-cloud-commons/pull/412 is has been merged. --- .../discovery/ConsulDiscoveryClient.java | 19 ++++++++++++------- .../ConsulDiscoveryClientConfiguration.java | 1 + .../discovery/ConsulDiscoveryProperties.java | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClient.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClient.java index fbcc5c1f..cbd7f8b9 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClient.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClient.java @@ -59,7 +59,7 @@ public class ConsulDiscoveryClient implements DiscoveryClient { @Deprecated public ConsulDiscoveryClient(ConsulClient client, ConsulDiscoveryProperties properties, - LocalResolver localResolver) { + LocalResolver localResolver) { this(client, properties); } @@ -74,7 +74,7 @@ public class ConsulDiscoveryClient implements DiscoveryClient { } public List getInstances(final String serviceId, - final QueryParams queryParams) { + final QueryParams queryParams) { List instances = new ArrayList<>(); addInstancesToList(instances, serviceId, queryParams); @@ -83,7 +83,7 @@ public class ConsulDiscoveryClient implements DiscoveryClient { } private void addInstancesToList(List instances, String serviceId, - QueryParams queryParams) { + QueryParams queryParams) { String aclToken = properties.getAclToken(); Response> services; @@ -99,11 +99,11 @@ public class ConsulDiscoveryClient implements DiscoveryClient { } for (HealthService service : services.getValue()) { String host = findHost(service); - - Map metadata = getMetadata(service); + + Map metadata = getMetadata(service); boolean secure = false; - if(metadata.containsKey("secure")) { - secure = Boolean.parseBoolean(metadata.get("secure")); + if (metadata.containsKey("secure")) { + secure = Boolean.parseBoolean(metadata.get("secure")); } instances.add(new DefaultServiceInstance(serviceId, host, service .getService().getPort(), secure, metadata)); @@ -133,4 +133,9 @@ public class ConsulDiscoveryClient implements DiscoveryClient { .keySet()); } } + + @Override + public int getOrder() { + return this.properties.getOrder(); + } } diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientConfiguration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientConfiguration.java index b2cc8dd7..d2af8fd0 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientConfiguration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClientConfiguration.java @@ -35,6 +35,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; /** * @author Spencer Gibb + * @author Olga Maciaszek-Sharma */ @Configuration @ConditionalOnConsulEnabled diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java index 51f4da72..eee4b33a 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java @@ -164,6 +164,11 @@ public class ConsulDiscoveryProperties { */ private Boolean healthCheckTlsSkipVerify; + /** + * Order of the discovery client used by `CompositeDiscoveryClient` for sorting available clients. + */ + private int order = 0; + @SuppressWarnings("unused") private ConsulDiscoveryProperties() {} @@ -464,6 +469,14 @@ public class ConsulDiscoveryProperties { this.healthCheckTlsSkipVerify = healthCheckTlsSkipVerify; } + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + @Override public String toString() { return "ConsulDiscoveryProperties{" + @@ -502,6 +515,7 @@ public class ConsulDiscoveryProperties { ", registerHealthCheck=" + registerHealthCheck + ", failFast=" + failFast + ", healthCheckTlsSkipVerify=" + healthCheckTlsSkipVerify + + ", order=" + order + '}'; }