ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
将消费端注册到Nacos中,并调用 cloudalibaba-provider-payment9001 服务端的服务。 <br/> 步骤如下: **1. 构建消费端模块:cloudalibaba-consumer-nacos-order83** **2. 在当前模块的`pom.xml`添加 alibaba-nacos-discovery 依赖** ```xml <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ... </dependencies> ``` **3. 当前模块的`application.yml`配置** ```yml server: port: 83 spring: application: name: cloud-nacos-order cloud: nacos: discovery: server-addr: localhost:8848 #nacos服务注册地址 #消费者将要去访问的微服务名称,即服务端的 spring.application.name 的值 server-url: nacos-user-service: http://nacos-payment-provider ``` **4. 在当前模块注入 RestTemplate 组件,方便访问到服务端** ```java @Configuration public class ApplicationContextConfig { @Bean @LoadBalanced // nacos默认的负载均衡:轮询 public RestTemplate getRestTemplate() { return new RestTemplate(); } } ``` **5. 在当前模块的 controller 层调用 RestTemplate 组件获取服务端的服务** ```java @RestController public class OrderNacosController { @Resource private RestTemplate restTemplate; @Value("${server-url.nacos-user-service}") private String url; /** * 访问 order83 消费端的 /order/getPayment/{id} 地址时 * 就会通过 RestTemplate 组件获取服务端的 url + "/payment/getPayment/" + id 服务。 */ @GetMapping("/order/getPayment/{id}") public String getPaymentInfo(@PathVariable("id") Long id) { return restTemplate.getForObject(url + "/payment/getPayment/" + id, String.class); } } ``` **6. 在当前模块的启动类上添加注解`@EnableDiscoveryClient`** ```java @SpringBootApplication @EnableDiscoveryClient public class NacosOrderMain83 { public static void main(String[] args) { SpringApplication.run(NacosOrderMain83.class, args); } } ``` **7. 测试** (1)先启动 nacos,再启动 cloudalibaba-provider-payment9001 服务端,最后启动 order83 消费端。 (2)浏览器访问nacos服务: http://localhost:8848/nacos (用户名:`nacos`、密码:`nacos`)。 ![](https://img.kancloud.cn/ec/0d/ec0d449455923fbb5d66ba5708c79191_1433x486.jpg) (3)看下图,可见 payment9001 服务端 和 order83 消费端 都已经注册到nacos了。 ![](https://img.kancloud.cn/cd/e3/cde3a8e847f47cef3cee2725145342b4_1807x510.jpg) (4)通过 order83 消费端获取 payment9001 服务端的服务。访问 order83 的 http://localhost:83/order/getPayment/2 ,得出如下结果说明访问到了 payment9001。 ``` Alibaba Nacos server 9001------2 ```