Jelajahi Sumber

feat:完成服务消费方通过RestTemplate负载均衡地调用服务提供方

yang yi 1 tahun lalu
induk
melakukan
557e2d95d0

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

@@ -1,5 +1,6 @@
 package anyi.space.memberConsumer.config;
 
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.client.RestTemplate;
@@ -14,6 +15,7 @@ import org.springframework.web.client.RestTemplate;
 @Configuration
 public class RestTemplateConfig {
     @Bean
+    @LoadBalanced
     public RestTemplate getRestTemplate(){
         return new RestTemplate();
     }

+ 13 - 3
member-service-consumer/src/main/java/anyi/space/memberConsumer/service/impl/MemberServiceIml.java

@@ -3,8 +3,10 @@ package anyi.space.memberConsumer.service.impl;
 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 org.springframework.http.HttpEntity;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
@@ -18,16 +20,24 @@ import java.util.Map;
  * @Data:2025/4/13 20:10
  * @Description:
  */
+@Slf4j
 @RequiredArgsConstructor
 @Service
 public class MemberServiceIml implements MemberService {
     private final RestTemplate restTemplate;
+    private final ObjectMapper objectMapper;
+    private final static String MEMBER_SERVICE_URL = "http://member-service-provider";
     @Override
     public Member getById(Long id) {
         /**
          * 通过RestTemplate调用远程服务
          */
-        ResponseEntity<ResponseResult> resultResponseEntity = restTemplate.getForEntity("http://localhost:10001/member-provider/member?id="+id, ResponseResult.class);
+        ResponseEntity<ResponseResult> resultResponseEntity = restTemplate.getForEntity(MEMBER_SERVICE_URL + "/member-provider/member?id="+id, ResponseResult.class);
+        try {
+            log.info("远程调用服务返回结果:{}",objectMapper.writeValueAsString(resultResponseEntity.getBody()));
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
         Object data = resultResponseEntity.getBody().getData();
         //映射请求结果
         Map map = (Map) data;
@@ -44,7 +54,7 @@ public class MemberServiceIml implements MemberService {
     @Override
     public boolean save(Member member) {
         //直接传递参数,是使用json的格式提交数据
-        ResponseEntity<ResponseResult> responseResultResponseEntity = restTemplate.postForEntity("http://localhost:10001/member-provider/member", member, ResponseResult.class);
+        ResponseEntity<ResponseResult> responseResultResponseEntity = restTemplate.postForEntity(MEMBER_SERVICE_URL + "/member-provider/member", member, ResponseResult.class);
         //HttpEntity<String> stringHttpEntity = new HttpEntity<>();
         Object data = responseResultResponseEntity.getBody().getData();
         boolean flag = (boolean) data;

+ 3 - 1
member-service-provider_10000/src/main/java/anyi/space/memberServer/controller/MemberController.java

@@ -24,7 +24,9 @@ public class MemberController {
     @GetMapping
     public ResponseResult<Member> getMemberById(Integer id){
         Member member = memberService.getById(id);
-        return ResponseResult.okResult(member);
+        ResponseResult responseResult = ResponseResult.okResult(member);
+        responseResult.setMsg(responseResult.getMsg() + "服务提供方10001");
+        return responseResult;
     }
     @PostMapping
     public ResponseResult addMember(@RequestBody Member member){

+ 3 - 1
member-service-provider_10002/src/main/java/anyi/space/memberServer/controller/MemberController.java

@@ -24,7 +24,9 @@ public class MemberController {
     @GetMapping
     public ResponseResult<Member> getMemberById(Integer id){
         Member member = memberService.getById(id);
-        return ResponseResult.okResult(member);
+        ResponseResult responseResult = ResponseResult.okResult(member);
+        responseResult.setMsg(responseResult.getMsg() + "服务提供方10002");
+        return responseResult;
     }
     @PostMapping
     public ResponseResult addMember(@RequestBody Member member){