美文网首页
Spring Cloud 2020: Hystrix不生效怪我咯

Spring Cloud 2020: Hystrix不生效怪我咯

作者: 猿天地 | 来源:发表于2021-03-19 14:05 被阅读0次

    好像没写相关的文章了,正好最近有朋友问我一些关于新版本中遇到的问题。

    2020.0.1这个版本是目前最新的版本,也是变动最大的一个版本。最大的变动莫过于将Netflix OSS的组件进行了移除操作。今天的问题也是跟这个有关系,大家通过标题就可以知道。

    虽然移除了Netflix的组件,但是对于初学者来说,市面上大部分书籍或者文章都是老的版本,也都是用的Netflix里面的组件。在学习的时候自然的选择了最新的版本,但是没有仔细的去看官方文档,也不知道最新版已经进行了移除,在用的时候还是按照老版本的方式去使用这些组件,自然就有问题了。

    问题背景

    服务调用使用Feign,也加了Hystrix的配置和依赖,也写了回退的逻辑。把服务提供方下线,调用接口,但是没有走回退逻辑,证明Hystrix没生效。

    开启Feign对Hystrix支持的配置如下:

    feign.hystrix.enabled=true
    

    如果没有生效,最好的方式就是通过源码来查找问题,首先就得看Feign的自动装配代码,类是FeignAutoConfiguration。

    然后你会发现已经找不到feign.hystrix.enabled了,对应新的控制装配的是feign.circuitbreaker.enabled。

    所以不生效的第一个原因就是配置错了,需要改成下面的才行:

    feign.circuitbreaker.enabled=true
    

    改完之后还是不行,没办法了,我要了一份代码,看了下新版本中对于熔断这块统一在commons中抽象了CircuitBreaker接口。但是找不到实现类,也就是说Hystrix有问题,要么就依赖错了,要么就是版本低了,无法适配。

    当前用的版本是2.1.6.RELEASE。

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        <version>2.1.6.RELEASE</version>
    </dependency>
    

    然后去mvnrepository中看了下,换了一个新版本2.2.6,就可以找到对应的CircuitBreaker实现类了。

    做完这两步后,Hystrix回退的逻辑生效了。

    本文主要还是分享解决问题的思路,希望大家有收获。

    关于作者:尹吉欢,简单的技术爱好者,《Spring Cloud微服务-全栈技术与案例解析》, 《Spring Cloud微服务 入门 实战与进阶》作者, 公众号猿天地发起人。

    相关文章

      网友评论

          本文标题:Spring Cloud 2020: Hystrix不生效怪我咯

          本文链接:https://www.haomeiwen.com/subject/ybvvcltx.html