From fc77265f11b1c83f871713de95bccef0f2e85c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E8=8B=B1=E6=9D=B0?= <327782001@qq.com> Date: Sun, 12 Feb 2023 00:56:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacos-feign-api/pom.xml | 4 +-- ...mputeClient.java => FeignUserService.java} | 4 +-- nacos-server-common/pom.xml | 4 +-- nacos-server-consumer/pom.xml | 9 ++++-- .../NacosConsumerApplication.java | 15 ++++++++- .../controller/ConsumerUserController.java | 29 +++++++++++++++-- nacos-server-producer/pom.xml | 4 +-- pom.xml | 31 +++++++++++++------ 8 files changed, 78 insertions(+), 22 deletions(-) rename nacos-feign-api/src/main/java/com/kwan/springcloudalibaba/api/{ComputeClient.java => FeignUserService.java} (87%) diff --git a/nacos-feign-api/pom.xml b/nacos-feign-api/pom.xml index c4d582e..7b5a941 100644 --- a/nacos-feign-api/pom.xml +++ b/nacos-feign-api/pom.xml @@ -17,8 +17,8 @@ 1.8 UTF-8 UTF-8 - 2.3.0.RELEASE - 2.2.1.RELEASE + 2.3.7.RELEASE + 2.2.2.RELEASE diff --git a/nacos-feign-api/src/main/java/com/kwan/springcloudalibaba/api/ComputeClient.java b/nacos-feign-api/src/main/java/com/kwan/springcloudalibaba/api/FeignUserService.java similarity index 87% rename from nacos-feign-api/src/main/java/com/kwan/springcloudalibaba/api/ComputeClient.java rename to nacos-feign-api/src/main/java/com/kwan/springcloudalibaba/api/FeignUserService.java index bb76de4..8d2d3c9 100644 --- a/nacos-feign-api/src/main/java/com/kwan/springcloudalibaba/api/ComputeClient.java +++ b/nacos-feign-api/src/main/java/com/kwan/springcloudalibaba/api/FeignUserService.java @@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.RequestMethod; * @date : 2023/1/10 13:45 */ @FeignClient(value = "nacos-server-producer", path = "/user") -public interface ComputeClient { +public interface FeignUserService { @RequestMapping(method = RequestMethod.GET, value = "/{id}", produces = MediaType.APPLICATION_PROBLEM_JSON_VALUE) - Result selectOne(@PathVariable Integer id); + Result selectOne(@PathVariable(value = "id") Integer id); } diff --git a/nacos-server-common/pom.xml b/nacos-server-common/pom.xml index b2a73b5..e1ec470 100644 --- a/nacos-server-common/pom.xml +++ b/nacos-server-common/pom.xml @@ -18,8 +18,8 @@ 1.8 UTF-8 UTF-8 - 2.3.0.RELEASE - 2.2.1.RELEASE + 2.3.7.RELEASE + 2.2.2.RELEASE diff --git a/nacos-server-consumer/pom.xml b/nacos-server-consumer/pom.xml index ec261b2..bee0936 100644 --- a/nacos-server-consumer/pom.xml +++ b/nacos-server-consumer/pom.xml @@ -17,8 +17,8 @@ 1.8 UTF-8 UTF-8 - 2.3.0.RELEASE - 2.2.1.RELEASE + 2.3.7.RELEASE + 2.2.2.RELEASE @@ -58,6 +58,11 @@ spring-cloud-starter-openfeign 2.0.0.RELEASE + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + 2.0.0.RELEASE + diff --git a/nacos-server-consumer/src/main/java/com/kwan/springcloudalibaba/NacosConsumerApplication.java b/nacos-server-consumer/src/main/java/com/kwan/springcloudalibaba/NacosConsumerApplication.java index 6615e96..743d7be 100644 --- a/nacos-server-consumer/src/main/java/com/kwan/springcloudalibaba/NacosConsumerApplication.java +++ b/nacos-server-consumer/src/main/java/com/kwan/springcloudalibaba/NacosConsumerApplication.java @@ -2,12 +2,25 @@ package com.kwan.springcloudalibaba; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Bean; +import org.springframework.web.client.RestTemplate; -//@EnableFeignClients +@EnableFeignClients +@EnableDiscoveryClient @SpringBootApplication public class NacosConsumerApplication { + @LoadBalanced + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + + public static void main(String[] args) { SpringApplication.run(NacosConsumerApplication.class, args); } diff --git a/nacos-server-consumer/src/main/java/com/kwan/springcloudalibaba/controller/ConsumerUserController.java b/nacos-server-consumer/src/main/java/com/kwan/springcloudalibaba/controller/ConsumerUserController.java index 2bbfd3f..451ee81 100644 --- a/nacos-server-consumer/src/main/java/com/kwan/springcloudalibaba/controller/ConsumerUserController.java +++ b/nacos-server-consumer/src/main/java/com/kwan/springcloudalibaba/controller/ConsumerUserController.java @@ -1,14 +1,18 @@ package com.kwan.springcloudalibaba.controller; -import com.kwan.springcloudalibaba.api.ComputeClient; +import com.kwan.springcloudalibaba.api.FeignUserService; import com.kwan.springcloudalibaba.common.Result; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.DiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; @RefreshScope @@ -17,8 +21,29 @@ import org.springframework.web.bind.annotation.RestController; public class ConsumerUserController { @Autowired - private ComputeClient computeClient; + private LoadBalancerClient loadBalancerClient; + @Autowired + private RestTemplate restTemplate; + + /** + * feign方式调用 + */ + @Autowired + private FeignUserService computeClient; + + + @Autowired + private DiscoveryClient discoveryClient; + + @GetMapping(value = "/loadBalancerClient/{id}", produces = MediaType.APPLICATION_PROBLEM_JSON_VALUE) + public Result loadBalancerClient(@PathVariable("id") Integer id) { + //使用LoadBalanceClient和RestTemplate结合的方式来访问 + ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-server-producer"); + String url = String.format("http://%s:%s/user/%s", "nacos-server-producer", serviceInstance.getPort(), id); + System.out.println("request url:" + url); + return Result.ok(restTemplate.getForObject(url, Object.class)); + } /** * http://127.0.0.1:8085/nacos/consumer/1 diff --git a/nacos-server-producer/pom.xml b/nacos-server-producer/pom.xml index 4e4a1fe..60d53f4 100644 --- a/nacos-server-producer/pom.xml +++ b/nacos-server-producer/pom.xml @@ -26,8 +26,8 @@ 1.8 UTF-8 UTF-8 - 2.3.0.RELEASE - 2.2.1.RELEASE + 2.3.7.RELEASE + 2.2.2.RELEASE diff --git a/pom.xml b/pom.xml index 3099742..f5dbcb9 100644 --- a/pom.xml +++ b/pom.xml @@ -15,8 +15,8 @@ 1.8 UTF-8 UTF-8 - 2.3.0.RELEASE - 2.2.5.RELEASE + 2.3.7.RELEASE + 2.2.2.RELEASE @@ -36,13 +36,7 @@ pom import - - - - - - - + org.springframework.boot spring-boot-dependencies @@ -50,6 +44,25 @@ pom import + + + + + + + + + com.netflix.archaius + archaius-core + 0.7.6 + + + com.google.guava + guava + + + + -- GitLab