使用feign和hystrix进行Spring启动:无法获得请求超时工作

时间:2017-05-11 08:41:47

标签: spring-boot spring-cloud spring-cloud-netflix

我遇到了让hystrix超时工作的问题。我已经创建了一个示例项目来显示:https://github.com/stianlagstad/spring-boot-timeout-demo

bootstrap.yml我设置了这样的超时:

hystrix:
  command:
    default:
      execution.isolation.thread.timeoutInMilliseconds: 60000
      circuitBreaker:
        enabled: true
        sleepWindowInMilliseconds: 300000
      fallback.enabled: false
    # My client
    MyFeignClient#getPost:
      execution.isolation.thread.timeoutInMilliseconds: 1

我希望这样的结果是hystrix命令应该在60秒后超时,除了getPost中的MyFeignClient,它应该在1毫秒后超时。不过,我没有看到。 getPost方法每次都会返回一个答案,我很确定它需要的时间超过一毫秒。

我还尝试使用ConfigurationManager在测试中手动设置超时,但这似乎也不起作用:https://github.com/stianlagstad/spring-boot-timeout-demo/blob/master/src/test/java/com/example/TimeoutDemoApplicationTests.java

如何让我设置的超时生效?

1 个答案:

答案 0 :(得分:4)

您需要在两个地方修复您的属性。

首先,添加以下属性。从dalston发布来看,假装的hystrix支持是可选的。您已经在类路径上使用了hystrix,因此您只需添加以下属性即可。

feign:
  hystrix:
    enabled: true

其次,你为假装指定了错误的HystrixCommandKey。您需要更改您的HystrixCommandKey,如下所示。

MyFeignClient#getPost():

#getPost之后需要括号。