Spring Cloud Feign 客户端调用是不是在 hystrix 命令中执行?
Posted
技术标签:
【中文标题】Spring Cloud Feign 客户端调用是不是在 hystrix 命令中执行?【英文标题】:Does Spring Cloud Feign client call execute inside hystrix command?Spring Cloud Feign 客户端调用是否在 hystrix 命令中执行? 【发布时间】:2015-12-05 14:36:38 【问题描述】:我正在使用此示例配置示例应用程序: http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign-inheritance。在本节http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-ribbon 中说:
Feign 已经使用了 Ribbon,所以如果你使用的是 @FeignClient 那么这个 部分也适用
这是否意味着@FeignClient 也使用了 Hystrix?对 feign 客户端的调用是否在 hystrix 命令中执行?如果是这样,传递 hystrix 配置的正确方法是什么?
有些示例使用 @HystrixCommand 包装对 feign 客户端的调用。这是正确的方法吗?
【问题讨论】:
【参考方案1】:有一个open ticket 来支持带有 feign 的 hystrix。目前,您需要使用 hystrix 包装对 feign 客户端的调用。
【讨论】:
为什么这不起作用 - [AT]HystrixCommand public X getX() myFeignClient.getX(); 未结工单已关闭。您现在可以使用feign-hystrix
模块。使用 HystrixFeign.builder()
而不是普通的 feign builder。所有方法都将受到电路保护。如果您需要响应式或异步支持,也可以返回 HystrixCommand<MyObject>
。
嗨 spencergibb,感谢您的快速回复。我正在使用 spring-cloud 和 netflix oss。我用 FeignClient 注释声明了 FeignClient。我没有使用 Feign.builder()。有没有办法用注释来探测 HystrixFeign 而不是 Feign 客户端?我没有找到 HystrixFeignClient 注释。但我只是想了解将 HystrixCommand 注释放在调用 feignClient 方法的方法上与使用 HystrixFeign 有何不同?【参考方案2】:
请使用信号量隔离:
hystrix:
command:
default:
execution:
isolation:
strategy: SEMAPHORE
【讨论】:
以上是关于Spring Cloud Feign 客户端调用是不是在 hystrix 命令中执行?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Alibaba系列使用feign进行服务调用