Feign使用Hystrix无效原因及解决方法
最近項(xiàng)目重構(gòu)使用了Spring Boot和Spring Cloud。這兩者結(jié)合確實(shí)給項(xiàng)目帶來了方便,同時(shí)也遇到了一些問題。其中使用feign作為服務(wù)消費(fèi),但是斷路器hystrix一直不起作用讓人很費(fèi)解。最終經(jīng)過重重查找終于找到原因,以及解決方法。
問題產(chǎn)生原因
首先,使用spring-cloud搭建微服務(wù)的過程大部分是根據(jù)網(wǎng)上的教程來的,由于網(wǎng)上教程的時(shí)間較早,而spring-cloud更新迭代較快,會(huì)造成依賴上的一些問題。教程中的spring-cloud的依賴是
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Brixton.RELEASE</version><type>pom</type><scope>import</scope></dependency>而我自己使用idea搭建項(xiàng)目使用的是較新的依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.RELEASE</version><type>pom</type><scope>import</scope> </dependency>發(fā)現(xiàn)兩者的區(qū)別了嗎?對(duì)!就是依賴版本不同。教程中的版本是?Brixton.RELEASE?而我使用的版本是Dalston.RELEASE?。
探究過程
根據(jù)這個(gè)關(guān)系順藤摸瓜找到了Netflix的依賴版本
接著,去了官網(wǎng)找到對(duì)應(yīng)的版本,查看文檔和API
在文檔中會(huì)看到
這個(gè)意思就說feign默認(rèn)是啟用hystrix的,如果要禁用的話需要加配置語句。但是種種跡象表明,feign中并沒有有啟用hystrix,看到這里當(dāng)時(shí)我就很疑惑,但是發(fā)現(xiàn)了hystrix在feign中的開關(guān),還是有所收獲的。我抱著試一試的心態(tài)照著上面的描述在配置文件中加上了配置,將false改為了true,結(jié)果神奇般的起了作用!
雖然問題解決了,為什么官方文檔還是有錯(cuò)誤的?在這里吐槽一句:TMD(挺萌的)~~~。
抱著追根求源的心態(tài),查看了netflix的源碼,看看什么時(shí)候修改了默認(rèn)配置。點(diǎn)擊上圖中的API就可以看到源github上的源碼了。里面這兩段代碼,就是管理默認(rèn)配置的。
為什么要默認(rèn)關(guān)閉hystrix呢?請(qǐng)看這里:https://github.com/spring-cloud/spring-cloud-netflix/issues/1277
至此,終于知道了產(chǎn)生錯(cuò)誤的原因,以及為什么要默認(rèn)關(guān)閉hystrix。
解決方案
如果是yml文件,請(qǐng)?jiān)谖募屑尤?#xff1a;
feign: hystrix:enabled: true如果是properties文件,請(qǐng)?jiān)谖募屑尤?#xff1a;
feign.hystrix.enabled=true重啟服務(wù),大功告成!
總結(jié)
以上是生活随笔為你收集整理的Feign使用Hystrix无效原因及解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flowable节点跳转
- 下一篇: 中小型互联网公司微服务实践-经验和教训