源码:https://gitee.com/qing11/learning-demo.git
创建一个父子工程,子工程为:订单服务、用户服务。
nacos服务端安装:Nacos的安装_程序搬砖员的博客-优快云博客
一、Spring Boot整合Nacos客户端
1、父工程引入pom.xml,对所有子工程进行版本管理
在<dependencyManagement>标签中引入Nacos客户端
<!--nacos的管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2、子工程引入pom.xml
<!-- nacos客户端依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3、子工程的配置文件:application.properties
#服务名称
spring.application.name=orderservice
#nacos的地址
spring.cloud.nacos.server-addr=127.0.0.1:8848
4、启动子项目,把订单服务、用户服务注册进入nacos服务端
二、Nacos的简单使用
服务之间的调用使用 RestTemplate 进行调用。
这里是 订单服务 调用 用户服务。
1、订单服务的配置:
package com.example.orderservice.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;
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced // 开启负载均衡 Ribbon, 发送的请求都会被Ribbon拦截。必须使用应用名代替ip,否则报错
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
注意:@LoadBalanced 是 Ribbon 负载均衡的注解,必须要使用,Ribbon的包已经在Nacos中了,不需要再次单独引入了。
2、业务代码:
@Autowired
private RestTemplate restTemplate;
// 2.利用RestTemplate发起http请求,查询用户
// 2.1.url路径
String url = "http://userservice/user/" + order.getUserId();
// 2.2.发送http请求,实现远程调用
User user = restTemplate.getForObject(url, User.class);
注意:userservice 是用户服务的服务名称,这里使用 RestTemplate 进行调用服务,必须是要写服务名称的。