diff --git a/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerClient.java b/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerClient.java index 40c22fd4..19ed6fc0 100644 --- a/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerClient.java +++ b/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerClient.java @@ -2,6 +2,8 @@ package org.springframework.cloud.client.loadbalancer; import org.springframework.cloud.client.ServiceInstance; +import java.net.URI; + /** * @author Spencer Gibb */ @@ -14,10 +16,13 @@ public interface LoadBalancerClient { public ServiceInstance choose(String serviceId); /** - * Choose a ServiceInstance from the LoadBalancer for the specified service + * execute request using a ServiceInstance from the LoadBalancer for the specified service * @param serviceId the service id to look up the LoadBalancer * @param request allows implementations to execute pre and post actions such as incrementing metrics * @return the result of the LoadBalancerRequest callback on the selected ServiceInstance */ - public T choose(String serviceId, LoadBalancerRequest request); + public T execute(String serviceId, LoadBalancerRequest request); + + public URI reconstructURI(ServiceInstance instance, URI original); + } diff --git a/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerRequest.java b/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerRequest.java index 396848d2..7c6cbc60 100644 --- a/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerRequest.java +++ b/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerRequest.java @@ -6,5 +6,5 @@ import org.springframework.cloud.client.ServiceInstance; * @author Spencer Gibb */ public interface LoadBalancerRequest { - public T apply(ServiceInstance instance); + public T apply(ServiceInstance instance) throws Exception; }