diff --git a/pom.xml b/pom.xml index d1bfa940..e1b15c13 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ ${basedir} 0.6.5 1.2.5 - 8.10.0 + 8.11.0 1.4.18 2.1.0 0.9.4 @@ -281,6 +281,11 @@ feign-httpclient ${feign.version} + + com.netflix.feign + feign-hystrix + ${feign.version} + com.netflix.hystrix hystrix-core diff --git a/spring-cloud-netflix-core/pom.xml b/spring-cloud-netflix-core/pom.xml index b21fc943..9f693ca8 100644 --- a/spring-cloud-netflix-core/pom.xml +++ b/spring-cloud-netflix-core/pom.xml @@ -111,6 +111,11 @@ feign-httpclient true + + com.netflix.feign + feign-hystrix + true + com.netflix.hystrix hystrix-core diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java index 16f0d51b..a1900059 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java @@ -39,6 +39,7 @@ import feign.Retryer; import feign.codec.Decoder; import feign.codec.Encoder; import feign.codec.ErrorDecoder; +import feign.hystrix.HystrixFeign; import feign.slf4j.Slf4jLogger; /** @@ -74,7 +75,7 @@ class FeignClientFactoryBean implements FactoryBean, InitializingBean, A } // @formatter:off - Feign.Builder builder = Feign.builder() + Feign.Builder builder = HystrixFeign.builder() // required values .logger(logger) .encoder(get(factory, Encoder.class)) diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java index 994372f1..c29acebb 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java @@ -56,6 +56,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.netflix.hystrix.HystrixCommand; import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.ServerList; @@ -106,6 +107,9 @@ public class FeignClientTests { @RequestMapping(method = RequestMethod.GET, value = "/helloparams") List getParams(@RequestParam("params") List params); + + @RequestMapping(method = RequestMethod.GET, value = "/hellos") + HystrixCommand> getHellosHystrix(); } @FeignClient(serviceId = "localapp") @@ -246,6 +250,15 @@ public class FeignClientTests { assertEquals("params size was wrong", list.size(), params.size()); } + @Test + public void testHystrixCommand() { + HystrixCommand> command = this.testClient.getHellosHystrix(); + assertNotNull("command was null", command); + List hellos = command.execute(); + assertNotNull("hellos was null", hellos); + assertEquals("hellos didn't match", hellos, getHelloList()); + } + @Data @AllArgsConstructor @NoArgsConstructor diff --git a/spring-cloud-starter-feign/pom.xml b/spring-cloud-starter-feign/pom.xml index b0e1a7e2..d54d1cdd 100644 --- a/spring-cloud-starter-feign/pom.xml +++ b/spring-cloud-starter-feign/pom.xml @@ -44,6 +44,10 @@ com.netflix.feign feign-slf4j + + com.netflix.feign + feign-hystrix + org.springframework.cloud spring-cloud-starter-ribbon