业务描述
先创建两个项目module分别为服务提供者和服务消费者,两个都要注册到NacosServer中(本质上就是一个web服务,端口默认是8848),服务提供者可以为服务消费者提供远程调用服务.

调用方式

说明:
1.RestTemplate方式:定义URL直接调用 ,多个端口则需定义多个URL,使用自定义算法实现负载均衡(如随机).
2.RestTemplate+LoadBalancerClient方式:使用LoadBalancerClient帮助我们获取nacos服务列表,采用轮询方式实现负载均衡
3.RestTemplate+@LoadBalanced方式:采用@LoadBalanced注解,起一个拦截器的作用,拦截之后底层帮我们获取nacos服务列表.(相比方式2就有点耗时)
4.@EnableFeignClients+@FeignClient方式:@EnableFeignClients注解描述启动类时,用于告诉springboot在启动时,扫描启动类所在包或子包中的类,假如接口上有@FeignClient注解描述,则对这样的接口创建其实现类,在实现类内部帮我们进行远程服务调用.
生产者服务的创建
创建服务提供者工程
创建服务提供者工程(module名为sca-provider),继承parent工程(01-sca),添加相关依赖包,其pom.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>01-sca</artifactId>
<groupId>com.jt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sca-provider</artifactId>
<dependencies>
<!--web服务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--服务的注册和发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
</project>
创建配置文件application.yml
创建并修改配置文件application.yml(或者application.properties),实现服务注册,关键代码如下:
server:
port: 8082
spring:
application:
name: sca-provider #服务名
cloud:
nacos:
discovery:
server-addr: localhost:8848 #服务注册和发现(默认是注册到这里)
注意这里需要三个端口,分别为8080,8081,8082.服务名不要使用下划线(“_”),应使用横杠(“-”),这是规则。
配置idea同时启动多个服务
需要先进行如下配置,才能启动多个服务.

进入编辑配置界面

创建启动类
创建启动类,并定义处理请求的控制层对象和方法,关键代码如下:
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
@Value("${server.port}")
private String server;
@RestController
public class ProviderController{
@GetMapping(value = "/provider/echo/{msg}")
public String doEcho(@PathVariable String msg){
return server+"say:Hello Nacos Discovery"+msg;
}
}
}
刷新nacos服务
启动启动类,然后刷先nacos服务,检测是否服务注册成功,如图所示:

本文详细介绍了如何在Spring Boot项目中使用Nacos实现服务提供者和服务消费者之间的远程调用,涉及多种调用方式,如RestTemplate、LoadBalancerClient、@LoadBalanced和FeignClient,并展示了配置管理和异常处理的实践。
最低0.47元/天 解锁文章
1577

被折叠的 条评论
为什么被折叠?



