Kaynağa Gözat

feat:测试Sentinel + Openfeign整合,导入Openfeign依赖,编写OpenFeign接口,使用OpenFeign实现的远程调用,启用OpenFeign功能

yang yi 1 yıl önce
ebeveyn
işleme
1117ed217a

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

@@ -16,6 +16,12 @@
         <maven.compiler.target>17</maven.compiler.target>
     </properties>
     <dependencies>
+        <!--导入OpenFeign的依赖-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <version>3.1.5</version>
+        </dependency>
         <!--新版的nacos负载均衡组件使用的是LoadBalancer,旧版使用的是Ribbon-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>

+ 2 - 0
member-service-consumer/src/main/java/anyi/space/memberConsumer/MemberConsumerApplication.java

@@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
 /**
  * @ProjectName: distributedSystemLearn
@@ -12,6 +13,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  * @Data:2025/4/13 20:05
  * @Description:
  */
+@EnableFeignClients
 @EnableDiscoveryClient
 @SpringBootApplication(exclude= DataSourceAutoConfiguration.class)
 public class MemberConsumerApplication {

+ 6 - 4
member-service-consumer/src/main/java/anyi/space/memberConsumer/controller/MemberConsumerController.java

@@ -2,7 +2,7 @@ package anyi.space.memberConsumer.controller;
 
 import anyi.sapce.common.entity.Member;
 import anyi.sapce.common.entity.ResponseResult;
-import anyi.space.memberConsumer.service.MemberService;
+import anyi.space.memberConsumer.service.MemberOpenFeignService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -23,16 +23,18 @@ import java.nio.charset.StandardCharsets;
 @RestController
 @RequestMapping("/member")
 public class MemberConsumerController {
-    private final MemberService memberService;
+    //private final MemberService memberService;
+    //使用OpenFeign的实现类
+    private final MemberOpenFeignService memberOpenFeignService;
     @GetMapping
     public ResponseResult<Member> getMemberById(Long id){
-        return memberService.getById(id);
+        return memberOpenFeignService.getById(id);
     }
     @PostMapping
     public ResponseResult addMember(Member member){
         String hex = DigestUtils.md5DigestAsHex(member.getPwd().getBytes(StandardCharsets.UTF_8));
         member.setPwd(hex);
-        boolean save = memberService.save(member);
+        boolean save = memberOpenFeignService.save(member);
         return ResponseResult.okResult(save);
     }
 }

+ 23 - 0
member-service-consumer/src/main/java/anyi/space/memberConsumer/service/MemberOpenFeignService.java

@@ -0,0 +1,23 @@
+package anyi.space.memberConsumer.service;
+
+import anyi.sapce.common.entity.Member;
+import anyi.sapce.common.entity.ResponseResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @ProjectName: distributedSystemLearn
+ * @FileName: MemberOpenFeignService
+ * @Author: 杨逸
+ * @Data:2025/9/19 16:41
+ * @Description: 使用OpenFeign的接口
+ */
+@Component
+@FeignClient("member-service-provider")
+public interface MemberOpenFeignService {
+    @GetMapping("/member-provider/member")
+     ResponseResult<Member> getById(@RequestParam("id") Long id);
+    @PostMapping("/member-provider/member")
+    boolean save(@RequestBody Member member);
+}