赞
踩
文章 《Spring Cloud 使用 Nacos 作配置中心》 描述了如何在 Spring Cloud 使用 Nacos 作配置中心的使用方法,本文在此基础上,使用 Nacos 作为 Spring Cloud 的注册中心。
为简单起见,这里使用单机版本的 Nacos Server 作为注册中心,安装过程可以参考 《Spring Cloud 使用 Nacos 作配置中心》。
服务提供者在文章 《Spring Cloud 使用 Nacos 作配置中心》 源代码 springcloudstudy
基础上进行开发。其中,springcloudstudy
作为父项目,服务提供者 nacosprovider
作为子项目。
添加 nacosprovider
的依赖:
<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>
其中,依赖 spring-cloud-starter-alibaba-nacos-discovery
用于连接 Nacos Server 注册中心。
bootstrap.yml
配置 Nacos Server 地址,以及服务名称:
server:
port: 8060
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: localhost:8868
spring.application.name
用于配置服务名称,这个名称会在 Nacos 控制台服务列表上展示。
在 Spring Boot 启动主类添加 @EnableDiscoveryClient
注解,开启服务注册功能:
@SpringBootApplication
@EnableDiscoveryClient
public class NacosproviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosproviderApplication.class, args);
}
}
增加 controller 接口:
@RestController
public class ProviderController {
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery " + string;
}
}
添加服务消费者 nacosconsumer
的依赖:
<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.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
其中,依赖 spring-cloud-starter-openfeign
用于使用 feign 客户端调用服务接口。
nacosconsumer
的 bootstrap.yml
配置:
server:
port: 8070
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8868
其中,服务名称 spring.application.name
配置为 nacos-consumer
。
在启动主类添加 @EnableFeignClients
注解启用 feign 客户端的使用,添加 @EnableDiscoveryClient
注解开启服务注册功能:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosconsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosconsumerApplication.class, args);
}
}
使用注解 @FeignClient
定义 feign 客户端,将远程服务 http://nacos-provider/echo/
映射为本地方法调用:
@FeignClient("nacos-provider")
public interface ProviderClient {
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
String echo(@PathVariable String string);
}
Feign 客户端能将服务名称 nacos-provider
映射为 nacosprovider
的地址,这是由于 nacosconsumer
和 nacosprovider
都已经连接上了 Nacos Server 注册中心,nacosconsumer
可以从注册中心获取 nacosprovider
的 ip 和端口。
nacosconsumer
提供 controller 接口,以测试调用 nacosprovider
接口:
@RestController
public class ConsumerController {
@Autowired
ProviderClient providerClient;
@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
public String echo(@PathVariable String str) {
return providerClient.echo(str);
}
}
其中,通过 @Autowired
注解,使用上面定义的 feign 客户端。可以看到 ,通过 feign 客户端,调用远程服务接口就像调用本地方法一样。
启动nacosconsumer
和 nacosprovider
后,可以看到 Nacos 控制台服务列表显示出两个服务:
调用接口 http://127.0.0.1:8070/echo/leehao.me
,返回:
Hello Nacos Discovery leehao.me
完整的源代码请参考:
https://github.com/haozlee/springcloudstudy
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。