Sentinel 流控注解使用

大概原理:通过反射解析注解 @SentinelResource信息完成调用,处理方法,类似AOP编程

处理方法的返回类型要保持一致,参数和顺序保持一致, 可以在参数列表最后加

com.alibaba.csp.sentinel.slots.block.BlockException;

java 复制代码
    /**
     * 如果不在同类,需要指明类名和方法名并且方法必须是静态方法
     */
    @GetMapping("/add2")
    @SentinelResource(value = "add", blockHandlerClass = {FlowContrlHandler.class}, blockHandler = "flow")
    public String add2() {
        System.out.println("下单成功!开始远程调用库存服务");
        return stockServiceFeign.reduct();
    }

    /**
     * 如果在同类,只需要指明方法名
     */
    @GetMapping("/flow")
    @SentinelResource(value = "flow", blockHandler = "flowControlHandler")
    public String flow() {
        return "正常访问";
    }
    
    public String flowControlHandler(BlockException e) {
        return "Sentinel: 请求频繁!请稍后再试!";
    }
java 复制代码
package com.ldj.cloud.order.handler;

import com.alibaba.csp.sentinel.slots.block.BlockException;

/**
 * User: ldj
 * Date: 2024/4/18
 * Time: 23:51
 * Description: No Description
 */
public class FlowContrlHandler {

    public static String flow(BlockException e) {
        return "Sentinel_Static: 请求频繁!请稍后再试!";
    }
}
相关推荐
我爱Jack10 分钟前
ObjectMapper 在 Spring 统一响应处理中的作用详解
java·开发语言
捡田螺的小男孩19 分钟前
京东一面:接口性能优化,有哪些经验和手段
java·后端·面试
小白杨树树25 分钟前
【SSM】SpringMVC学习笔记8:拦截器
java·开发语言
艾露z27 分钟前
深度解析Mysql中MVCC的工作机制
java·数据库·后端·mysql
冷心笑看丽美人28 分钟前
Spring MVC 之 异常处理
java·开发语言·java-ee·spring mvc
神仙别闹29 分钟前
基于Java(SpringBoot、Mybatis、SpringMvc)+MySQL实现(Web)小二结账系统
java·spring boot·mybatis
超级小忍29 分钟前
Java集合中Stream流的使用
java·开发语言
趁你还年轻_1 小时前
Spring 官方推荐构造函数注入
java·spring·log4j