基于时间的断路器

news/2024/11/19 19:43:32/文章来源:https://www.cnblogs.com/wyzstudy/p/18197676

1 新建一个微服务模块

我们在cloud-payment-service模块中新增一个controller以提供给其它微服务模块调用。

@RestController
public class PayCircuitController {@GetMapping("/pay/circuit/{id}")public String myCircuit(@PathVariable("id") Integer id){if(id == -4) {throw new RuntimeException("ID不能为负数");}if(id == 999) {try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {e.printStackTrace();}}return "Hello Circuit! InputId: " + id + " \t" + IdUtil.simpleUUID();}
}

根据ID返回一段字符串,当ID为负数或者999使用特殊处理,其它情况直接返回字符串。

2 编写OpenFeign访问接口

@FeignClient(value = "cloud-payment-service", path = "/pay")
@RestController
public interface PayFeignApi {@GetMapping("/circuit/{id}")public String myCircuit(@PathVariable("id") Integer id);
}

3 引入依赖

<!-- Circuit断路器       -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>
<!--   断路器保护需要AOP实现     -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency>

4 配置文件

resilience4j:timelimiter:configs:default:timeout-duration: 10s #circuitbreaker:configs:default:failure-rate-threshold: 50 # 设置50%失败打开断路器,超过失败百分比的circuitBreaker变为OPEN状态slow-call-duration-threshold: 2s # 慢调用时间阀值slow-call-rate-threshold: 30 # 慢调用百分比峰值,断路器时间大于slow-call-duration-threshold就是慢调用,当达到峰值就打开断路器sliding-window-type: TIME_BASED # 滑动窗口类型sliding-window-size: 2 # 滑动窗口大小配置COUNT_BASED表示6个请求 配置为TIME_BASED表示6sminimum-number-of-calls: 2 # 断路器计算失败率或者慢调用率之前所需要的最小样本automatic-transition-from-open-to-half-open-enabled: true # 是否开启自动从开启状态过渡到半开状态。默认为truewait-duration-in-open-state: 5s # 从OPEN到HALF_OPEN需要等待时间permitted-number-of-calls-in-half-open-state: 2 # 半开状态最大请求数record-exceptions:- java.lang.Exceptioninstances:cloud-payment-service:base-config: default

5 编写业务

@RestController
public class OrderCircuitController {@Resourceprivate PayFeignApi payFeignApi;@GetMapping("/feign/pay/circuit/{id}")@CircuitBreaker(name = "cloud-payment-service" , fallbackMethod = "myCircuitFullBack")public String myCircuitBreaker(@PathVariable("id") Integer id){return payFeignApi.myCircuit(id);}@Operation(summary = "服务降级后的处理方法")public String myCircuitFullBack(Integer id,Throwable e){return "系统繁忙,请稍后再试!!";}
}

6 测试



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707723.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机体系结构-Booth乘法

本专栏用于记录计算机体系结构学习笔记原理解释 电路实现 以Radix-4 Booth编码为例,Booth乘法的核心是部分积的生成,需要生成\(N/2\)个部分积,每个部分积与\([X]_补\)有关,存在\(-X,-2X,+X,+2X,0\) 这五种可能,其中减去\(X_{补}\)的操作可以认为是按位取反的\(X_{补}\)在末…

使用 JS 实现在浏览器控制台打印图片 console.image()

在前端开发过程中,调试的时候,我门会使用 console.log 等方式查看数据。但对于图片来说,仅靠展示的数据与结构,是无法想象出图片最终呈现的样子的。虽然我们可以把图片数据通过 img 标签展示到页面上,或将图片下载下来进行预览。但这样的调试过程实在是复杂,何不实现一个…

渗透测试快速启动指南-全-

渗透测试快速启动指南(全)原文:Quick Start Guide to Penetration Testing 协议:CC BY-NC-SA 4.0一、NMAP 简介 漏洞评估和渗透测试变得越来越重要,尤其是在最近几年。组织通常拥有存储敏感数据的复杂资产网络。这些资产暴露在来自组织内部和外部的潜在威胁之下。为了全面…

『手撕Vue-CLI』编码规范检查

前言 这篇为什么是编码规范检查呢?因为这是一个很重要的环节,一个好的编码规范可以让代码更加清晰易读,在官方的 VUE-CLI 也是有着很好的编码规范的,所以我也要加入这个环节。 其实不管在哪个项目中,编码规范都是很重要的,像我们平日里的项目开发当中,我们也会使用 ESLi…

字节面试:MySQL什么时候 锁表?如何防止锁表?

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

CF1884D Counting Rhyme 题解

题目链接:CF 或者 洛谷 给个莫反题解,讲讲常规套路 题目要求满足没有 \(a_k \mid a_i 与 a_k \mid a_j\) 的 \((i,j)\) 的对数,显然即不存在 \(a_k \mid \gcd(a_i,a_j)\)。稍微拓展下,如果不存在整除多个数,那么显然不整除它们的 \(\gcd\) 即可,因为它们的公因数即为满足…

ITSM工作台:工程师效率与协同的新天地

在当今快节奏的IT运维领域,ITILDESK工作台脱颖而出,成为专为技术工程师量身打造的全能助手。这款平台不仅仅是一个工具集合体,它是一个精心设计的生态系统,旨在促进工程师的工作效率、团队协作与个人成长,为日常运维工作带来前所未有的便捷与智能。 一站式工作环境:从工…

HTML5中 drag 和 drop api

被拖放元素 -- A,目标元素 -- B。dragstart 事件主体是A,在开始拖放A时触发。 dragend 事件主体是A,在整个拖放操作结束时触发。 drag 事件主体是A,正在拖放A时触发(整个拖拽,drag事件会在被拖拉的节点上持续触发,相隔几百毫秒)。 dragenter 事件主体是B,在A进入某元素…

一些不错的地理题

2022年福建高考与土壤联系最密切的应该是植被 所以AB选项直接排除 然后的话30度的时候为什么大幅上升呢,主要是因为青藏高原 所以通过尺度也可以做这个题 10度的纬度,算是一个中等的尺度,而不应该是土壤植被这种小尺度大题意义类要去找主体、找问题 对你的意义 对我的意义 对…

项目管理之八大绩效域-------笔记(二)

八大绩效域详细解析 18.1 干系人绩效域跟干系人所有相关的活动.一、预期目标①与干系人建立高效的工作关系②干系人认同项目目标③支持项目的干系人提高了满意度,并从中收益④反对项目的干系人没有对项目产生负面影响三四是一个意思,就是支持你的人更支持你,反对你的人没有负面…

【日记】跟奇安信斗智斗勇,败下阵来(416 字)

正文今天一个客户都没有,让我快怀疑我们银行是不是要倒闭了……因为内外网 u 盘不知所踪,所以重新制了一个。深刻体会到了奇安信有多烂。有两个 u 盘,奇安信似乎把主控写坏了,插上电脑有反应,但是看不见盘符,磁盘管理也看不到。另一个也是这样,但后面莫名其妙好了。Wind…