Kaynağa Gözat

feat:测试Sentinel + Openfeign整合,在OpenFeign启用Sentinel熔断降级策略,配置熔断降级使用的降级类

yang yi 1 yıl önce
ebeveyn
işleme
4ccb6d48b5

+ 5 - 0
member-service-consumer/pom.xml

@@ -16,6 +16,11 @@
         <maven.compiler.target>17</maven.compiler.target>
     </properties>
     <dependencies>
+        <!--导入Sentinel依赖-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
         <!--导入OpenFeign的依赖-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>

+ 2 - 1
member-service-consumer/src/main/java/anyi/space/memberConsumer/service/MemberOpenFeignService.java

@@ -14,7 +14,8 @@ import org.springframework.web.bind.annotation.*;
  * @Description: 使用OpenFeign的接口
  */
 @Component
-@FeignClient("member-service-provider")
+//fallback指定降级类,当触发Sentinel的熔断降级策略时,使用fallback指定的实现类(这个类也要实现当前接口)
+@FeignClient(value = "member-service-provider",fallback = MemberOpenFeignServiceFallback.class)
 public interface MemberOpenFeignService {
     @GetMapping("/member-provider/member")
      ResponseResult<Member> getById(@RequestParam("id") Long id);

+ 26 - 0
member-service-consumer/src/main/java/anyi/space/memberConsumer/service/MemberOpenFeignServiceFallback.java

@@ -0,0 +1,26 @@
+package anyi.space.memberConsumer.service;
+
+import anyi.sapce.common.entity.Member;
+import anyi.sapce.common.entity.ResponseResult;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ProjectName: distributedSystemLearn
+ * @FileName: MemberOpenFeignServiceFallback
+ * @Author: 杨逸
+ * @Data:2025/9/19 18:22
+ * @Description: Sentinel熔断降级后OpenFeign接口使用的实现类
+ */
+@Component
+public class MemberOpenFeignServiceFallback implements MemberOpenFeignService{
+
+    @Override
+    public ResponseResult<Member> getById(Long id) {
+        return ResponseResult.errorResult(500,"触发Sentinel熔断降级策略,使用降级类,快速返回结果,避免服务雪崩");
+    }
+
+    @Override
+    public boolean save(Member member) {
+        return false;
+    }
+}

+ 8 - 0
member-service-consumer/src/main/resources/application.yaml

@@ -10,3 +10,11 @@ spring:
       discovery:
         #配置nacos服务注册中心的地址
         server-addr: localhost:8848
+    sentinel:
+      transport:
+        dashboard: localhost:8080
+        port: 8719
+feign:
+  sentinel:
+    #配置OpenFein整合Sentinel
+    enabled: true