生产技巧:Feign如何控制Hystrix的启停、超时、熔断?
标签:
Spring Cloud
这也是一篇写于2017-08前后的工作日志,当时由于项目比较多,很多团队对Feign和Hystrix之间的小暧昧搞不清楚,所以写了本篇文章,希望对大家的工作有所帮助。
要想全局关闭Hystrix,只需使用如下配置即可:
feign.hystrix.enabled: false
这样,就会为所有服务关闭掉Feign的Hystrix支持。也就是说:A服务调用B服务,如果在A服务上设置该属性,A服务的所有Feign Client都不会再有Hystrix熔断的能力了。
全局配置够灵活,一般不能满足实际项目的要求。实际项目中,往往需要精确到指定服务的细粒度配置。例如:调用服务a时关闭Hystrix,调用b服务时打开Hystrix。可如下配置:
@FeignClient(name="a", configuration = FooConfiguration.class)
那么,这个FooConfiguration只需要编写如下即可:
public class FooConfiguration { @Bean @Scope("prototype") public Feign.Builder feignBuilder() { return Feign.builder(); } }
这样,对于
name = "a"
的Feign Client都会关闭Hystrix支持。很多场景下,关闭Hystrix相对暴力,特别是上文编写代码的方式。很多时候,我们可能更希望只是关闭熔断,抑或是关闭超时保护。此时要怎么搞呢?
关闭熔断:
# 全局关闭熔断:hystrix.command.default.circuitBreaker.enabled: false# 局部关闭熔断:hystrix.command.<HystrixCommandKey>.circuitBreaker.enabled: false
设置超时:
# 全局设置超时:hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 1000 # 局部设置超时:hystrix.command.<HystrixCommandKey>.execution.isolation.thread.timeoutInMilliseconds: 1000
关闭超时:
# 全局关闭:hystrix.command.default.execution.timeout.enabled: false# 局部关闭:hystrix.command.<HystrixCommandKey>.execution.timeout.enabled: false
其中的
<HystrixCommandKey>
,是个变量,可以打开服务的hystrix.stream
端点即可看到,也可在Hystrix Dashboard中查看。
本文首发
http://www.itmuch.com/spring-cloud-sum/feign-hystrix/
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦