Spring Cloud 2020: Hystrix不生效怪我咯

点击上方蓝色“方志朋”,选择“设为星标”

回复“666”获取独家整理的学习资料!

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

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 回退的逻辑生效了。

在这里,我为大家准备了一份2021年最新最全的《史上最简单的java面试题》,这套电子书涵盖了诸多java技术栈的面试知识题,是作者面试BAT大厂的前的总结,作者顺利拿下AT的offer,相信可以帮助大家在最短的时间内复习Java后端的大多数面试题,从而拿到自己心仪的offer。

截了张图,大家可以仔细查看左边的菜单栏,覆盖的知识面真的很广,而且质量都很不错。



资料获取方法


扫描下方二维码
后台回复关键词:BAT
明天见(。・ω・。)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值