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 Feign 调用过程分析

spring-cloud Feign

Spring Cloud之Feign

Spring Cloud Alibaba系列使用feign进行服务调用

Spring Cloud Alibaba系列使用feign进行服务调用

使用Spring Cloud Feign作为HTTP客户端调用远程HTTP服务