高版本Spring Cloud中OpenFeign整合Hystrix熔断降级不生效的问题及解决方案

这篇具有很好参考价值的文章主要介绍了高版本Spring Cloud中OpenFeign整合Hystrix熔断降级不生效的问题及解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要

本文将介绍在使用高版本Spring Cloud(2020.0.x及以后),由于取消了Hystrix的集成,导致OpenFeign与Hystrix熔断降级不生效的问题。同时,也将给出解决该问题的方案,即添加feign.circuitbreaker.enabled=true配置。

正文

1. 背景

随着Spring Cloud框架的发展,高版本Spring Cloud(2020.0.x及以上)中取消了对Hystrix的集成和支持。这对之前依赖于Hystrix进行服务熔断和降级的项目带来了一些困扰,特别是在使用OpenFeign进行远程调用时。

2. 问题描述

在高版本Spring Cloud(2020.0.x及以上)中,原先使用OpenFeign与Hystrix进行熔断降级的配置方式已经失效。具体来说,之前常用的配置项"feign.hystrix.enabled"被移除,无法再通过该配置项来启用Hystrix相关功能。

2.1 症状

在忽略版本迁移的情况下,使用高版本Spring Cloud通过OpenFeign进行服务调用时,发现Hystrix的熔断降级策略不起作用,即使配置了相关的降级逻辑,也无法触发。

2.2 原因分析

主要原因是,自Spring Cloud 2020.0.0版本开始,已移除相关的Netflix OSS组件,自然就不再默认集成Hystrix,取消了对Hystrix的自动装配。因此,导致配置项`feign.hystrix.enabled`不再生效。

2020.0.0版本前,只需在启动类上添加@EnableHystrix注解,OpenFeign的熔断降级功能便可生效,因为@EnableHystrix注解中引用了@EnableCircuitBreaker注解,默认开启了熔断降级功能。而在2020.0.0版本后,@EnableCircuitBreaker注解已被废弃:

openfeign的配置feign.hystrix.enabled没了 什么版本去掉的?,spring cloud,hystrix,java

且在spring-configuration-metadata.json文件中找不到hystrix相关配置:

openfeign的配置feign.hystrix.enabled没了 什么版本去掉的?,spring cloud,hystrix,java

3. 解决方案

为了解决高版本Spring Cloud中OpenFeign整合Hystrix熔断降级不生效的问题,我们需要手动添加配置来启用Circuit Breaker模块。

具体解决方案如下:

3.1 添加依赖

首先,在项目的构建文件(例如Maven的pom.xml)中添加以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

3.2 配置开关

在项目的配置文件(例如application.yml或application.properties)中添加以下配置项:

feign:
  circuitbreaker:
    enabled: true

该配置项用于启用OpenFeign的Circuit Breaker模块,从而替代了之前的Hystrix。

3.3 编写熔断降级逻辑

在需要进行熔断降级处理的Feign客户端接口上,添加`@FeignClient`注解,并在`fallback`属性中指定对应的Fallback类(实现Feign客户端接口)。示例代码如下:

@FeignClient(name = "service-name", fallback = MyFallback.class)
public interface MyFeignClient {

    @GetMapping("/api/endpoint")
    String getEndpoint();
}
@Component
public class MyFallback implements MyFeignClient {
    
    @Override
    public String getEndpoint() {
        return "触发服务降级";
    }
}

4. 结论

通过以上的解决方案,我们可以在高版本Spring Cloud中成功启用OpenFeign的熔断降级功能,替代了取消的Hystrix集成。通过手动配置`feign.circuitbreaker.enabled`,并编写相应的降级逻辑,我们可以继续在项目中使用熔断降级策略,确保系统的稳定性。文章来源地址https://www.toymoban.com/news/detail-835621.html

到了这里,关于高版本Spring Cloud中OpenFeign整合Hystrix熔断降级不生效的问题及解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud GateWay实现熔断降级

    当分布式系统中的网关接收到大量请求并向后端远程系统或服务发起调用时,后端服务可能会产生调用失败(如超时或异常)。这时,如果让请求继续堆积在网关上,可能会导致整个系统的瘫痪。因此,需要快速失败并返回请求,这就是所谓的熔断。 降级是指在系统资源不足

    2024年02月02日
    浏览(30)
  • Spring Cloud 容错机试 Hystrix 服务降级 RestTemplate:

    雪崩效应:   如果短信服务炸了后面的所有服务就会起连锁反应造成全部服务挂掉 , 这就是雪崩效应 , 那么其实短信服务又不是我们主要业务 , 这个时候我们可以采用服务降级 , 服务降级就是暂时的把短信服务停掉能用就返回不能用就返回个错误 , 但是它也不会影响

    2024年02月07日
    浏览(32)
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级

    直击微服务作用     遇到了什么问题?         将单体架构拆分成微服务架构后,如果保证多个服务(项目)正常运行?     哪个技术可以解决这个问题?         微服务技术         服务治理: 服务管理,维护服务与服务之间的关系     这个技术如何使用?         netflix/网飞:

    2024年02月03日
    浏览(32)
  • Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Spring Cloud OpenFeign是一个声明式的服务调用框架,基于Feign并整合了Ribbon和Hystrix;目标是简化分布式系统中编写服务间调用的代码,并提供一种更加优雅和便捷的方式来进行服务之间的通信 依赖导入 application.yml配置 启

    2024年02月05日
    浏览(37)
  • 【Spring Cloud】Sentinel流量限流和熔断降级的讲解

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Spring Cloud》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起

    2024年01月23日
    浏览(36)
  • Dubbo hystrix 熔断降级 示例

    目录 Pom 应用启动类 接口 服务提供者 消费者 总结 因为jar包冲突问题报错 java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.([Ljava/lang/Object;)V 解决方式修改低版本springboot 改成如下 版本对照 全代码 pom 启动 实现 yml 有需要加上这个 有超时熔断跳转到 reliable

    2024年02月12日
    浏览(33)
  • SpringCloud学习6(Spring Cloud Alibaba)断路器Sentinel熔断降级

    SpringCloud、SpringCloudAlibaba、SpringBoot版本选择。为了避免各种千奇百怪的bug,我们还是采用官方推荐的毕业版本。 修改tomcat配置最大线程数 引入测试依赖 编写测试代码 这里同时我们在浏览器去请求该地址,响应会变得很慢 测试结论:此时会发现由于thread接口囤积大量请求,

    2023年04月08日
    浏览(40)
  • Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月04日
    浏览(55)
  • Hystrix入门使用 服务熔断 服务降级 服务雪崩

    hystrix停止更新,理念优秀。 分布式系统面临的问题: 对于复杂的分布式体系,有数十个依赖,依赖不可避免的错误。 服务会出现雪崩, 高可用受到破坏 。 Hystrix就是用于解决分布式系统延迟和容错的开源库。 保证在一个依赖出现问题,不会导致整体的服务失败,避免级联故

    2024年02月07日
    浏览(37)
  • Hystrix和Sentinel熔断降级设计理念

    Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。 Sentinel 对这个问题采取了两种手段: 通过并发线程数进

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包