Nacos (二) 客户端简单集成

Nacos
placeholder image
admin 发布于: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,参考如下图所示:

image.png

另外在集成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);
    }

}

示例结果

image.png

(实例描述信息)

image.png

(实例名列表)

image.png

(获取注册的服务对象列表)

特别说明

(1)实际示例源码不仅集成了Nacos,还有Admin监控、Swagger接口调试、Sleuth链路追踪;

(2)application.yml示例中配置了多台Nacos的服务端地址,即集群化部署参数,实际应用中发现任一台Nacos能够访问就可正常运行;

(3)暂未实践Nacos的服务配置,该例为简单的服务注册,需要在Nacos中新建指定的命名空间,默认为public;

(4)项目工程源码见:源码下载.zip



 点赞


 发表评论

当前回复:作者

 评论列表


留言区