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>
<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呢?请看这里:https://github.com/spring-cloud/spring-cloud-netflix/issues/1277
至此,终于知道了产生错误的原因,以及为什么要默认关闭hystrix。
解决方案
如果是yml文件,请在文件中加入:
feign:
hystrix:
enabled: true
如果是properties文件,请在文件中加入:
feign.hystrix.enabled=true
重启服务,大功告成!
本文首发地址:http://www.devzxd.top/2017/05/05/feign-hystrix-problem.html
Feign使用Hystrix无效原因及解决方法的更多相关文章
- 使用 ADOX 将 Table 添加到 Catalog 时报“类型无效”的原因和解决方法
http://blog.csdn.net/kfhzy/article/details/6020283 http://blog.csdn.net/kfhzy/article/details/602054 ...
- jQuery validate插件,自动验证无效的原因及解决方法归纳
最近在使用validate插件进行验证的时候,出现有的控件在个别事件(比如keydown.foucs.onchange等)下不能自动验证,而有的控件却又正常,当时觉得很诡异,后来仔细测试查看,归纳原因 ...
- 部分APP无法代理抓包的原因及解决方法
引言 HTTP应用层的抓包已经成为日常工作测试与调试中的重要一环,最近接触新项目突然之间发现之前的抓包手段都不好使了,顿时模块与模块之间的前端与服务之间的交互都变成了不可见,整个人都好像被蒙住了眼睛. ...
- coreseek常见错误原因及解决方法
coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...
- .NET 3.5 安装错误的四个原因及解决方法
.net framework 3.5 安装错误的四个常见原因及解决方法,飓风软件站整理,转载请注明. 1.清除所有版本 .NET Framework 安装错误后在系统中遗留的文件: 如果您以往安装过 ...
- Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...
- Nginx 502 Bad Gateway 错误的原因及解决方法
http://my.oschina.net/zhouyuan/blog/118708 刚才在调试程序的时候,居然服务器502错误,昨天晚上也发生了,好像我没有做非常规的操作. 然后网上寻找了下答案, ...
- oracle 索引失效原因及解决方法
oracle 索引失效原因及解决方法 2010年11月26日 星期五 17:10 一.以下的方法会引起索引失效 1,<>2,单独的>,<,(有时会用到,有时不会)3,like ...
- Nginx 499错误的原因及解决方法
今天进行系统维护,发现了大量的499错误, 499错误 ngx_string(ngx_http_error_495_page), /* 495, https certificate error */n ...
随机推荐
- 使用JavaEE的ServerAuthModule模块和web.xml进行相应配置,实现对用户的权限控制
ServerAuthModule这里不细说,可以自行百度. 重点在注释: <!-- 声明用于安全约束的角色 --> <security-role> <role-name& ...
- for循环-0,1,1,2,2可以组成多少个不重复的五位数?
今天想到了一个比较有意思的for循环题:0,1,1,2,2可以组成多少个不重复的五位数? 它主要是for循环多层嵌套外加if判断,代码如下: protected void Button1_Click( ...
- Google的PageRank及其Map-reduce应用(日志五)
上一篇:Hadoop的安装(日志四) 1,算法的原理解释: 如下图所示,G就是传说中的谷歌矩阵,这个矩阵是n*n型号的,n表示共计有n个网页. 如矩阵中所示: 11位置处的元素,是表示第一个网页指向的 ...
- hdu 2114 Calculate S(n) 数论(简单题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2114 自己对数论一窍不通啊现在,做了一道水题,贴出来吧...主要是让自己记住这个公式: 前n项和的立方 ...
- RabbitMQ学习-1补充
1.如果尝试声明一个已经存在的队列会发生什么? 只要参数完全匹配现存的队列的话,Rabbit什么也不做,并返回成功,就好像这个队列已经创建成功. 2.如何检测队列是否存在? 在创建队列的时候设置que ...
- C#超简单方法实现两个richtextbox控件滚动条同步滚动
此文章属于作者原创,转载请注明,谢谢 有时候我们需要实现对照文章等,往往将文本放到两个richtextbox控件中,但是,如果我们需要同步滚动查看,来达到更好的观看效果. 当然,传统的方法重载控件或者 ...
- centos mysql5.7 二进制包安装
此种方式安装非常简单 cd /usr/local 下载安装包wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux- ...
- SQL优化一
1.行列转换: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值); select decode(sign(变量1-变量2),-1,变量1,变量2) from dual ...
- tomcat类加载体系
类加载,再来一发. 研究完java提供的类加载机制,再来看看tomcat开出了那些花. 最近开始读tomcat的源码,主线路当然是类加载机制,在这个过程中有豁然开朗的感觉.这一篇主要是自己的体会,而不 ...
- 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)
16.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同 ...