Bläddra i källkod

feat:通过DiscoveryClient获取服务的注册信息,主动获取服务注册的实例信息

yang yi 1 år sedan
förälder
incheckning
152da630e2

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

@@ -3,6 +3,7 @@ package anyi.space.memberConsumer;
 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.netflix.eureka.EnableEurekaClient;
 
 /**
@@ -12,6 +13,7 @@ import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  * @Data:2025/4/13 20:05
  * @Description:
  */
+@EnableDiscoveryClient
 @EnableEurekaClient
 @SpringBootApplication(exclude= DataSourceAutoConfiguration.class)
 public class MemberConsumerApplication {

+ 31 - 0
member-service-consumer/src/main/java/anyi/space/memberConsumer/controller/MemberConsumerController.java

@@ -3,7 +3,12 @@ package anyi.space.memberConsumer.controller;
 import anyi.sapce.common.entity.Member;
 import anyi.sapce.common.entity.ResponseResult;
 import anyi.space.memberConsumer.service.MemberService;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
 import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -11,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.nio.charset.StandardCharsets;
+import java.util.List;
 
 /**
  * @ProjectName: distributedSystemLearn
@@ -19,11 +25,14 @@ import java.nio.charset.StandardCharsets;
  * @Data:2025/4/13 20:07
  * @Description:
  */
+@Slf4j
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/member")
 public class MemberConsumerController {
     private final MemberService memberService;
+    private final DiscoveryClient discoveryClient;
+    private final ObjectMapper objectMapper;
     @GetMapping
     public ResponseResult<Member> getMemberById(Long id){
         Member member = memberService.getById(id);
@@ -36,4 +45,26 @@ public class MemberConsumerController {
         boolean save = memberService.save(member);
         return ResponseResult.okResult(save);
     }
+    @GetMapping("/discovery")
+    public ResponseResult discovery(){
+        //获取所有注册的服务名称
+        List<String> services = discoveryClient.getServices();
+        for (int i = 0; i < services.size(); i++) {
+            String service = services.get(i);
+            log.info("服务名称:{}",service);
+            //获取对应服务的实例信息列表
+            List<ServiceInstance> instances = discoveryClient.getInstances(service);
+            for (int j = 0; j < instances.size(); j++) {
+                //获取具体服务实例的信息,比如IP和端口等
+                ServiceInstance instance = instances.get(j);
+                try {
+                    log.info("服务名称:{},服务实例信息:{}",service,objectMapper.writeValueAsString(instance));
+                } catch (JsonProcessingException e) {
+                    e.printStackTrace();
+                    log.error("服务名称:{},服务实例信息:{}",service,e.getMessage());
+                }
+            }
+        }
+        return ResponseResult.okResult(services);
+    }
 }