Feign使⽤Hystrix⽆效原因及解决⽅法
最近项⽬重构使⽤了Spring Boot和Spring Cloud。这两者结合确实给项⽬带来了⽅便,同时也遇到了⼀些问题。其中使⽤feign作为服务消费,但是断路器hystrix⼀直不起作⽤让⼈很费解。最终经过重重查终于到原因,以及解决⽅法。
问题产⽣原因
⾸先,使⽤spring-cloud搭建微服务的过程⼤部分是根据⽹上的教程来的,由于⽹上教程的时间较早,⽽spring-cloud更新迭代较快,会造成依赖上的⼀些问题。教程中的spring-cloud的依赖是
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.RELEASE</version>
<type>pom</type>
spring framework和spring的关系
<scope>import</scope>
</dependency>
⽽我⾃⼰使⽤idea搭建项⽬使⽤的是较新的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
发现两者的区别了吗?对!就是依赖版本不同。教程中的版本是Brixton.RELEASE⽽我使⽤的版本是Dalston.RELEASE。
探究过程
根据这个关系顺藤摸⽠到了Netflix的依赖版本
接着,去了到对应的版本,查看⽂档和API
在⽂档中会看到
这个意思就说feign默认是启⽤hystrix的,如果要禁⽤的话需要加配置语句。但是种种迹象表明,feign中并没有有启⽤hystrix,看到这⾥当时我就很疑惑,但是发现了hystrix在feign中的开关,还是有所收获的。我抱着试⼀试的⼼态照着上⾯的描述在配置⽂件中加上了配置,
将false改为了true,结果神奇般的起了作⽤!
虽然问题解决了,为什么官⽅⽂档还是有错误的?在这⾥吐槽⼀句:TMD(挺萌的)~~~。
抱着追根求源的⼼态,查看了netflix的源码,看看什么时候修改了默认配置。点击上图中的API就可以看
到源github上的源码了。⾥⾯这两段代码,就是管理默认配置的。
⾄此,终于知道了产⽣错误的原因,以及为什么要默认关闭hystrix。
解决⽅案
如果是yml⽂件,请在⽂件中加⼊:
feign:
hystrix:
enabled: true
如果是properties⽂件,请在⽂件中加⼊:
abled=true
重启服务,⼤功告成!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论