Nacos (二) 客户端简单集成
Nacosadmin 发布于:2023-01-27 22:57:05
阅读:loading
本次Nacos的客户端示例不再是一个纯净的Spring Boot项目,而是作为个人在学习Spring Cloud系列技术的一部分,所以它隶属于我的Spring Cloud项目示例中。首先创建Spring Cloud项目,再创建nacos-client模块,重点在于需要先明确Spring Boot和对应的Spring Cloud版本匹配,可以从“https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明”选择匹配的版本,本次实践选择的Spring Boot版本为:2.4.2,Spring Cloud Alibaba版本为2021.1,参考如下图所示:
另外在集成Spring Boot时最好是继承spring-boot-starter-parent模块,可以在加载很多的组件时省略版本号。
关于代码集成部分给出关键部分,更多更详细的可转至源码下载或查看。
(1)maven坐标,在项目的pom.xml模块导入spring boot和spring cloud alibaba坐标,在nacos-client模块增加spring-boot-starter-web即可。
(2)application.yml配置参考如下:
server:
port: 8020
servlet:
context-path: /nacos-client
spring:
#应用名称
application:
name: chendd-nacos-client
cloud:
#nacos 客户端
nacos:
discovery:
#是否启用
enabled: true
#服务端地址(集群化部署参数)
server-addr: 192.168.244.134:8848,192.168.244.138:8848,192.168.244.139:8848
#命名空间
namespace: chendd-SpringCloud-Hello-World-NamespaceId
(3)启动类NacosClientApplication增加@SpringBootApplication和@EnableDiscoveryClient注解;
(4)编写NacosClientExampleController接口,增加获取nacosDiscoveryClient对象的3个接口,参考如下:
package cn.chendd.api.nacos.controller;
import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClient;
/**
* Nacos api controller
*
* @author chendd
* @date 2022/9/25 21:44
*/
@RestController
@RequestMapping(value = "/nacos" , produces = MediaType.APPLICATION_JSON_VALUE)
@Api(tags = "NacosDiscoveryClient 测试")
@ApiSort(10)
public class NacosClientExampleController {
@Resource
private NacosDiscoveryClient nacosDiscoveryClient;
@ApiOperationSupport(order = 10)
@ApiOperation(value = "实例名列表" , notes = "获取所有实例名称列表")
@GetMapping("/services")
public List<String> getServices() {
return nacosDiscoveryClient.getServices();
}
@ApiOperationSupport(order = 20)
@ApiOperation(value = "实例描述信息" , notes = "获取NacosDiscoveryClient描述信息")
@GetMapping("/description")
public String getDescription() {
return nacosDiscoveryClient.description();
}
@ApiOperationSupport(order = 30)
@ApiOperation(value = "实例对象列表" , notes = "获取所有实例对象列表")
@GetMapping("/services/{serviceId}")
public List<ServiceInstance> getServiceId(@PathVariable @ApiParam(name = "serviceId" , value = "实例Id") String serviceId) {
return nacosDiscoveryClient.getInstances(serviceId);
}
}
(实例描述信息)
(实例名列表)
(获取注册的服务对象列表)
(1)实际示例源码不仅集成了Nacos,还有Admin监控、Swagger接口调试、Sleuth链路追踪;
(2)application.yml示例中配置了多台Nacos的服务端地址,即集群化部署参数,实际应用中发现任一台Nacos能够访问就可正常运行;
(3)暂未实践Nacos的服务配置,该例为简单的服务注册,需要在Nacos中新建指定的命名空间,默认为public;
(4)项目工程源码见:源码下载.zip;
点赞