tianyun 2 年之前
父節點
當前提交
9db7d3be98
共有 2 個文件被更改,包括 41 次插入2 次删除
  1. 5 0
      springboot-main/pom.xml
  2. 36 2
      springboot-main/src/main/java/com/alvin/Application.java

+ 5 - 0
springboot-main/pom.xml

@@ -49,6 +49,11 @@
             <artifactId>commons-pool2</artifactId>
             <version>2.11.1</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-core</artifactId>
+            <version>1.8.1</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 36 - 2
springboot-main/src/main/java/com/alvin/Application.java

@@ -1,12 +1,46 @@
 package com.alvin;
 
 
-import org.springframework.boot.SpringApplication;
+import com.alibaba.csp.sentinel.Entry;
+import com.alibaba.csp.sentinel.SphU;
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+import com.alibaba.csp.sentinel.slots.block.RuleConstant;
+import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
+import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @SpringBootApplication
 public class Application {
     public static void main(String[] args) throws Exception {
-        SpringApplication.run(Application.class);
+        //SpringApplication.run(Application.class);
+        // 配置规则.
+        initFlowRules();
+
+        while (true) {
+            // 1.5.0 版本开始可以直接利用 try-with-resources 特性,自动 exit entry
+            try (Entry entry = SphU.entry("HelloWorld")) {
+                // 被保护的逻辑
+                System.out.println("hello world");
+            } catch (BlockException ex) {
+                // 处理被流控的逻辑
+                //System.out.println("blocked!");
+            }
+        }
+    }
+    private static void initFlowRules(){
+        List<FlowRule> rules = new ArrayList<>();
+        FlowRule rule = new FlowRule();
+        //绑定资源
+        rule.setResource("HelloWorld");
+        //限流阈值类型
+        rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
+        //数量级别
+        rule.setCount(20);
+        //添加到本地内存
+        rules.add(rule);
+        FlowRuleManager.loadRules(rules);
     }
 }