Ver Fonte

feat:测试Sentinel的@SentinelResource注解中blockHandlerClass的配置和blockHandler的配置

yang yi há 1 ano atrás
pai
commit
ae9a48f827

+ 26 - 0
member-service-provider_10000/src/main/java/anyi/space/memberServer/components/MySentinelBlockHandler.java

@@ -0,0 +1,26 @@
+package anyi.space.memberServer.components;
+
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+
+/**
+ * @ProjectName: distributedSystemLearn
+ * @FileName: MySentinelBlockHandler
+ * @Author: 杨逸
+ * @Data:2025/9/19 15:54
+ * @Description: 自定义全局Sentinel的降级处理
+ */
+public class MySentinelBlockHandler {
+    /**
+     * 自定义限流处理
+     * 必须是静态方法,返回值与@SentinelResource注解的标识方法的返回值保持一致
+     * 参数列表与@SentinelResource注解标识方法的参数列表保持一致,可以多一个BlockException参数
+     * @param e
+     * @return
+     */
+    public static String myBlockHandler(BlockException e) {
+        e.printStackTrace();
+        String msg = "自定义的Sentinel全局myBlockHandler被触发";
+        System.out.println(msg);
+        return msg;
+    }
+}

+ 9 - 0
member-service-provider_10000/src/main/java/anyi/space/memberServer/controller/SentinelTestController.java

@@ -1,5 +1,6 @@
 package anyi.space.memberServer.controller;
 
+import anyi.space.memberServer.components.MySentinelBlockHandler;
 import com.alibaba.csp.sentinel.annotation.SentinelResource;
 import com.alibaba.csp.sentinel.slots.block.BlockException;
 import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowException;
@@ -82,6 +83,14 @@ public class SentinelTestController {
         return msg;
     }
 
+    @SentinelResource(value = "t6",blockHandlerClass = MySentinelBlockHandler.class,blockHandler = "myBlockHandler")
+    @GetMapping("/t6")
+    public String t6(){
+        String msg = "t6被执行";
+        System.out.println(msg);
+        return msg;
+    }
+
     /**
      * news为测试Sentinel热点规则的接口
      * @param id