Open-Feign整合hystrix降级熔断实战

news/2023/9/27 7:27:50

Open-Feign整合hystrix降级熔断实战

  • 一、服务端
    • 1、配置文件
    • 2、控制层
  • 二、客户端
    • 1、依赖
    • 2、配置文件
    • 3、启动类
    • 4、在控制层当中调用
    • 5、创建一个类实现服务FeignClient接口
    • 6、在服务FeignClient接口上配置FallBack实现类
  • 三、测试
    • 1、场景一服务正常调用
    • 2、场景二当被调服务停止运行时
    • 3、场景三当调取服务超时时
    • 4、其他


一、服务端

1、配置文件

application.yml

server:port: 9000spring:application:name: my-test2 #服务的名称

2、控制层

@RestController
public class ShoppingController {@RequestMapping("/myTestBuy2")public String myTestBuy2(){//用来模拟服务超时try {Thread.sleep(6000);} catch (InterruptedException e) {e.printStackTrace();}return "购买成功——时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());}
}

二、客户端

1、依赖

        <!--Open-Feign依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--hystrix依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency>

2、配置文件

server:port: 8000spring:application:name: my-test1 #服务的名称#允许服务降级配置
feign:hystrix:enabled: true#自定义ribbon的超时时间 设置的要比hystrix-timeoutInMilliseconds超时时间大
ribbon:#指的是建立连接后从服务器读取到可用资源所用的时间。ReadTimeout: 10000#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间,处理请求的超时时间,默认为5秒。ConnectTimeout: 10000hystrix:command:default:execution:isolation:thread:#feign整合hystrix 光设置Hystrix超时没用的 要配合ribbon超时timeoutInMilliseconds: 5000my-test2:url: http://127.0.0.1:9000

3、启动类

@SpringBootApplication
@EnableFeignClients//开启open-feign
@EnableHystrix//开启降级熔断服务
public class MyTestApplication1 {public static void main(String[] args) {SpringApplication.run(MyTestApplication1.class,args);}
}

4、在控制层当中调用

@RestController
public class TestController1 {@AutowiredTestService1 testService1;@RequestMapping("/myTestBuy1")public String myTestBuy2(){return testService1.myTestBuy2();}}

5、创建一个类实现服务FeignClient接口

@Component
public class MyHystrix1 implements TestService1 {@Overridepublic String myTestBuy2() {return "调用失败,该服务被熔断——时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());}
}

6、在服务FeignClient接口上配置FallBack实现类

@FeignClient(name = "my-test2", url = "${my-test2.url}", fallback = MyHystrix1.class)
public interface TestService1 {@RequestMapping("/myTestBuy2")String myTestBuy2();
}

三、测试

1、场景一服务正常调用

在这里插入图片描述

2、场景二当被调服务停止运行时

只给两秒的时间,则自动启动熔断
在这里插入图片描述
在这里插入图片描述

3、场景三当调取服务超时时

熔断时间根据hystrix设置的时间,我这里设置的是5秒
在这里插入图片描述

在这里插入图片描述

4、其他

在这里插入图片描述


https://dhexx.cn/news/show-18340.html

相关文章

图的全局最小割的Stoer-Wagner算法及例题

Stoer-Wagner算法基本思想&#xff1a;如果能求出图中某两个顶点之间的最小割&#xff0c;更新答案后合并这两个顶点继续求最小割&#xff0c;到最后就得到答案。 算法步骤&#xff1a; ------------------------------------------------------------------------------------…

学习消息中间件Kafka从配置到基本应用

学习消息中间件Kafka从配置到基本应用一、服务器安装配置Kafka1、配置介绍与修改2、启动3、配置开机自启4、如果不使用自带的zookeeper二、Kafka的使用场景1、异步处理2、应用解耦3、流量削锋4、日志处理5、消息通讯三、点对点消息传递模式1、介绍四、发布-订阅消息传递模式1、…

【译】ASP.NET MVC 5 教程 - 1:入门

本教程将教你使用Visual Studio 2013 预览版构建 ASP.NET MVC 5 Web 应用程序 的基础知识。本主题还附带了一个采用 C# 源代码的 Visual Web Developer 项目。下载C# 版本。 入门 Visual Studio 是一个集成的开发环境。就像您使用 Microsoft Word 写文档&#xff0c;您将使用 I…

Redis雪崩、穿透、击穿补充学习与布隆过滤器

Redis学习补充与布隆过滤器一、缓存雪崩1、介绍2、处理雪崩数据二、缓存穿透1、介绍2、处理穿透数据三、缓存击穿2、处理击穿数据四、Redis其他知识1、Redis为何这么快2、Redis的持久化策略五、布隆过滤器1、安装2、介绍布隆过滤器3、使用布隆过滤器BloomFilter解决Redis的缓存…

在线音频江湖:内容大战、场景之争、AI博弈

配图来自Canva可画 智能终端的普及&#xff0c;让“耳朵经济”有了更大的发挥空间&#xff0c;连带着在线音频平台也获得了新增长。近期&#xff0c;在线音频赛道喜讯连连&#xff0c;先是喜马拉雅宣布首次单季度盈利&#xff0c;荔枝也紧跟着宣布首次实现全年盈利。 喜马拉雅…

ExtJs 4.0 动态生成Grid

每写一篇文章都是一部血泪史啊。最近公司的需求要是使用到Ext的动态生成Grid&#xff0c;公司用的是4.0&#xff0c;由于版本问题在网上找了很多都不实用&#xff0c;所以自己研究了下。 现在给大家分享出来。 后台Json: callback内容&#xff1a; 1 callback : function(optio…

Java多线程与各种锁

Java多线程与各种锁一、Synchronize线程同步二、各种Lock锁1、普通锁2、公平锁与非公平锁3、乐观锁与悲观锁以及CAS优化乐观锁4、重入锁与重入自旋锁一、Synchronize线程同步 public class BuyController {public static void main(String[] args) {MyThread myThread1 new M…

Zookeeper分布式协调

Zookeeper分布式协调一、Zookeeper是什么&#xff1f;1、开启zookeeper服务及使用二、使用zookeeper1、连接zookeeper工具类2、参数介绍3、监听服务上下线提示4、分布式锁三、CuratorLock框架实现分布式锁四、实践五、其他1、如何关闭 org.apache.zookeeper.clientcnxn 的(控制…

什么是阶梯电价

什么是阶梯电价&#xff1f; 阶梯电价全名为阶梯式累进电价&#xff0c;是指将现行单一形式的居民电价&#xff0c;改为按照用户消费的电量分段定价&#xff0c;用电价格随用电量增加逐级递增的一种电价定价机制。即把居民每个月的用电分成基本用电、正常用电、高质量用电三档。…

Elasticsearch入门学习

Elasticsearch一、安装二、操作索引1、介绍2、创建一个空索引&#xff08;库&#xff09;3、修改副本&#xff08;库&#xff09;4、删除索引&#xff08;库&#xff09;三、基础使用1、数据插入数据2、局部更新3、删除数据4、查询数据5、两种查询模式6、复杂搜索7、全文搜索8、…