zoukankan      html  css  js  c++  java
  • 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的依赖版本

    netflix依赖版本

    接着,去了官网找到对应的版本,查看文档和API

    mark

    在文档中会看到
    文档说明

    这个意思就说feign默认是启用hystrix的,如果要禁用的话需要加配置语句。但是种种迹象表明,feign中并没有有启用hystrix,看到这里当时我就很疑惑,但是发现了hystrix在feign中的开关,还是有所收获的。我抱着试一试的心态照着上面的描述在配置文件中加上了配置,将false改为了true,结果神奇般的起了作用!

    虽然问题解决了,为什么官方文档还是有错误的?在这里吐槽一句:TMD(挺萌的)~~~。

    抱着追根求源的心态,查看了netflix的源码,看看什么时候修改了默认配置。点击上图中的API就可以看到源github上的源码了。里面这两段代码,就是管理默认配置的。

    HystrixSecurityAutoConfiguration.java

    FeignClientsConfiguration.java

    为什么要默认关闭hystrix呢?请看这里:https://github.com/spring-cloud/spring-cloud-netflix/issues/1277

    至此,终于知道了产生错误的原因,以及为什么要默认关闭hystrix。

    解决方案

    如果是yml文件,请在文件中加入:

    feign:
      hystrix:
        enabled: true

    如果是properties文件,请在文件中加入:

    feign.hystrix.enabled=true

    重启服务,大功告成!

  • 相关阅读:
    把EXE可执行文件等作为资源包含在Delphi编译文件中
    delphi怎么做桌面滚动文字?
    cxGrid控件过滤筛选后如何获更新筛选后的数据集
    我的ecshop二次开发经验分享
    ECSHOP 数据库结构说明 (适用版本v2.7.3)
    cxGrid 怎样才能让不自动换行 WordWrap:=false
    vi notes
    ODI中显示us7ascii字符集的测试
    ODI 11g & 12c中缓慢变化维(SCD)的处理机制
    ODI中的临时接口
  • 原文地址:https://www.cnblogs.com/ydymz/p/8521153.html
Copyright © 2011-2022 走看看