Java微服务商城高并发秒杀项目--013.SentinelResource的使用

news2024/11/15 18:40:51

在shop-order-server模块中新建AnnoController:

@RestController
@Slf4j
public class AnnoController {
    @RequestMapping("/anno1")
    @SentinelResource(value = "anno1",
            blockHandler="anno1BlockHandler",
            fallback = "anno1Fallback"
    )
    public String anno1(String name){
        if("wolfcode".equals(name)){
            throw new RuntimeException();
        }
        return "anno1";
    }
    public String anno1BlockHandler(String name, BlockException ex){
        log.error("{}", ex);
        return "接⼝被限流或者降级了";
    }
    //Throwable时进⼊的⽅法
    public String anno1Fallback(String name,Throwable throwable) {
        log.error("{}", throwable);
        return "接⼝发⽣异常了";
    }
}

启动服务后,查看sentinel中的服务:

设置服务流控规则,并检验流控的响应方式,发现没有走全局的响应:

附加@SentinelResource的常用参数:

属性

作用

value

资源名称,必需项(不能为空)

entryType

entry 类型,可选项(默认为 EntryType.OUT

blockHandler / blockHandlerClass

blockHandler 对应处理 BlockException 的函数名称,可选项。blockHandler 函数访问范围需要是public ,返回类型需要与原⽅法相匹配,参数类型需要和原⽅法相匹配并且最后加⼀个额外的参数,类型为BlockException 。blockHandler 函数默认需要和原⽅法在同⼀个类中。若希望使⽤其他类的函数,则可以指定blockHandlerClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则⽆法解析。

fallback / fallbackClass

fallback 函数名称,可选项,⽤于在抛出异常的时候提供fallback 处理逻辑。fallback 函数可以针对所有类型的异常(除了 exceptionsToIgnore ⾥⾯排除掉的异常类型)进⾏处理。fallback 函数签名和位置要求:

1. 返回值类型必须与原函数返回值类型⼀致;

2.⽅法参数列表需要和原函数⼀致,或者可以额外多⼀个Throwable 类型的参数⽤于接收对应的异常。

3.fallback 函数默认需要和原⽅法在同⼀个类中。若希望使⽤其他类的函数,则可以指定 fallbackClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则⽆法解析。

defaultFallback

默认的 fallback 函数名称,可选项,通常⽤于通⽤的fallback 逻辑(即可以⽤于很多服务或⽅法)。默认fallback 函数可以针对所有类型的异常(除了

exceptionsToIgnore ⾥⾯排除掉的异常类型)进⾏处理。若同时配置了 fallback 和 defaultFallback,则只有fallback 会⽣效。defaultFallback 函数签名要求:

1. 返回值类型必须与原函数返回值类型⼀致;

2. ⽅法参数列表需要为空,或者可以额外多⼀个Throwable 类型的参数⽤于接收对应的异常。

3. defaultFallback 函数默认需要和原⽅法在同⼀个类中。若希望使⽤其他类的函数,则可以指定 fallbackClass为对应的类的 Class 对象,注意对应的函数必需为 static函数,否则⽆法解析。

exceptionsToIgnore

⽤于指定哪些异常被排除掉,不会计⼊异常统计中,也不会进⼊ fallback 逻辑中,⽽是会原样抛出。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Stream流写出优雅的高质量代码

前言 我们在开发中会大量的用到集合,少不了对集合进行一些操作,如何优雅的遍历集合,操作集合,不仅能体现出代码的质量,更能体现出程序员本身对自我的要求。 文章目录 前言一、Stream初体验二、Stream流的使用2.1 获取…

python实现人脸识别(face_recognition)

一、定义 1、介绍 本项目是世界上最强大、简洁的人脸识别库,你可以使用Python和命令行工具提取、识别、操作人脸。 本项目的人脸识别是基于业内领先的C开源库dlib中的深度学习模型,用Labeled Faces in the Wild人脸数据集进行测试,有高达99…

ESP32(一):Win10配置 IDF+VSCode

一、安装包下载: Git:Git for WindowsPython:Download Python | Python.org以Windows x86-64开头的是 64 位的 Python 安装程序;以Windows x86开头的是 32 位的 Python 安装程序。ESP-IDF(选择Offline版本&#xff09…

Kettle安装与使用

一、Kettle简介 Kettle最早是一个开源的ETL(Extract-Transform-Load的缩写)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。后来Kettle重命名为Pentaho Data Integration 。它由Java开发,…

数据结构学习记录——堆的删除(思路图解、代码实现、逐段解析)

目录 堆的删除(最大堆) 思路 代码 解析 堆的删除(最大堆) 思路 代码 ElementType DeleteMax( MaxHeap H ) { /* 从最大堆H中取出键值为最大的元素,并删除一个结点 */int Parent, Child;ElementType MaxItem, X…

戴尔Alienware m18r1原厂win11中文系统 带F12 Support Assist OS Recovery恢复功能

戴尔Alienware m18r1原厂win11中文系统 带F12 Support Assist OS Recovery一键恢复功能 恢复各机型预装系统,带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能,一次性恢复成新机状态,并且以后不用重装系统&#…

手把手教你学习IEC104协议和编程实现 十三-写定值

直接进入主题,要想写入定值,首先要确定写入的是那个定值区,毕竟按照iec104的规定,定值区有8个为0~7,那么就首先涉及到了,切换定值区的过程,执行过程如下: 切换定值区 我们看到,TI=200=0xC8h 我们先设计一个按钮,用于切换定值区。如下图: 在这个按钮的相应的消息上…

【Docker_image_source】docker设置国内镜像源

关于Docker镜像源的设置 国内加速地址 1.Docker中国区官方镜像 https://registry.docker-cn.com 2.网易 http://hub-mirror.c.163.com 3.ustc https://docker.mirrors.ustc.edu.cn 4.中国科技大学 https://docker.mirrors.ustc.edu.cn 5.阿里云容器 生成自己的加速地址 登录&am…

升级企业数智化底座 用友iuap拉满长期主义

本文转自 深度 我们普遍认为,人类社会经历了工业革命、电气革命,现在正奔赴从信息革命到智能革命的道路上,这一过程迫切且不可逆。 因此,《“十四五”数字经济发展规划》指出,以数字技术与实体经济深度融合为主线&a…

JavaScript:数组---双指针法

文章目录 双指针法27.移除元素为什么返回值是整数,但输出的答案是数组?双指针法 977.有序数组的平方暴力法:先平方再排序双指针法 总结双指针 双指针法 27.移除元素 为什么返回值是整数,但输出的答案是数组? 双指针法…

阿里工作7年,肝到P8就剩这份学习笔记了,已助朋友拿到20个Offer

在阿里工作了7年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P7也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记…

3.13 结构体嵌套、大小及位域

目录 结构体嵌套结构体 结构体的大小 位域 结构体嵌套结构体 含义 结构体中的成员可以是另一个结构体 语法 struct 结构体名 { struct 结构体名 成员名; }; 结构体中共同的变量可以单独放出来,单独封装一个结构体 结构体的大小 字节对齐 含义 …

微服务篇:开始从头到尾搭建第一个微服务(小白)

微服务篇 我的一个微服务 手把手写微服务项目,从现在开始 文章目录 微服务篇环境搭建开发工具开发环境 一、创建项目:创建gitee链接1、登录 gitee 创建仓库2、 给项目起一个名字(本地名字要跟远端一致哦) panda3、打开IDEA创建项…

19. Unity - 2D游戏开发小记02 --- 伪透视图、2D物体碰撞、瓦片地图碰撞、素材缩放平铺

1. 伪视图 在2D游戏开发当中,当角色移动时,会发生物体与物体之间的前后遮挡。2D视图中的前后关系是由 Y 轴决定,y 值越小物体越靠前。unity的渲染应开启根据 y 值的大小进行渲染才能保证正确的遮挡效果,在菜单栏Editor–>project setting --> Graphic中按照下图方式…

MySQL之Doublewrite Buffer详解

前言 本文已收录在MySQL性能优化原理实战专栏,点击此处浏览更多优质内容。 上一篇文章MySQL之Adaptive Hash Index详解我们学习了InnoDB Adaptive Hash Index自适应哈希索引的工作原理。其本质是将频繁访问数据页的索引键值以“Key”放在缓存中,“Value”…

【微机原理】汇编指令之传送指令

目录 一、传送类指令 1.MOV 传送指令 2.XCHG 传送指令 二、LEA 有效地址传送指令 三.堆栈操作指令 (1)入栈指令:PUSH (2)出栈指令:POP 四、输入输出指令 (1)IN 输入指令 &#xff08…

nginx部署本地启动vue项目

需求:就是想在本地不运行vue项目,可以直接访问到打包后的vue项目 1.安装nginx nginx: download,这里我安装的1.12.2稳定版本 2.下载完直接得到一个压缩包,直接把它解压到一个目录 !!!&#x…

CSI指纹预处理(中值、均值、Hampel、维纳滤波、状态统计滤波器)

目录 前言 1、箱线法 2、中值滤波器 3、均值滤波器 4、Hampel滤波器 5、维纳滤波 6、状态统计滤波器 前言 因为设备、温度和实验室物品摆设等因素的影响,未经处理的CSI数据不能直接使用,需要对数据进行异常值处理以保证数据的稳定性,…

力扣刷题2023-05-04-1——题目:2614. 对角线上的质数

题目: 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数,返回 0 。 注意: 如果某个整数大于 1 ,且不存在除 1 和自身之外的正整数因子,…

【前端】1、flex 布局

flex 布局目录 一、flex container 和 flex items二、用在 flex container 上的 CSS 属性(1) flex-direction(2) justify-content(3) align-items 三、用在 flex items 上的 CSS 属性 一、flex container 和 flex items 🎄 1、开启了 Flex 布局的元素叫 flex cont…