原文:http://www.itmuch.com/spring-cloud-sum/feign-hystrix/ ,轉載請說明出處。java
這也是一篇寫於2017-08先後的工做日誌,當時因爲項目比較多,不少團隊對Feign和Hystrix之間的小曖昧搞不清楚,因此寫了本篇文章,但願對你們的工做有所幫助。spring
要想全局關閉Hystrix,只需使用以下配置便可:ui
feign.hystrix.enabled: false
這樣,就會爲全部服務關閉掉Feign的Hystrix支持。也就是說:A服務調用B服務,若是在A服務上設置該屬性,A服務的全部Feign Client都不會再有Hystrix熔斷的能力了。prototype
全局配置夠靈活,通常不能知足實際項目的要求。實際項目中,每每須要精確到指定服務的細粒度配置。例如:調用服務a時關閉Hystrix,調用b服務時打開Hystrix。可以下配置:日誌
@FeignClient(name="a", configuration = FooConfiguration.class)
那麼,這個FooConfiguration只須要編寫以下便可:code
public class FooConfiguration { @Bean @Scope("prototype") public Feign.Builder feignBuilder() { return Feign.builder(); } }
這樣,對於name = "a"
的Feign Client都會關閉Hystrix支持。ci
不少場景下,關閉Hystrix相對暴力,特別是上文編寫代碼的方式。不少時候,咱們可能更但願只是關閉熔斷,抑或是關閉超時保護。此時要怎麼搞呢?get
關閉熔斷:it
# 全局關閉熔斷: hystrix.command.default.circuitBreaker.enabled: false # 局部關閉熔斷: hystrix.command.<HystrixCommandKey>.circuitBreaker.enabled: false
設置超時:io
# 全局設置超時: 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中查看。