Spring Boot项目怎么从Nacos注册中心上获取其他服务列表信息?

一、前言

在spring boot项目开发过程中,为了进行微服务之间的调用,我们一般会使用注册中心,比如Nacos。假设我们有一个业务需求,应用A需要从Nacos注册中心上获取服务信息进行分析,需要怎么实现呢?

二、开发步骤

1.搭建Nacos注册中心

Nacos注册中心的搭建,可以参考我之前的文章:nacos安装手册

2. 新建测试服务

我们新建一个Spring Boot项目作为测试服务,该服务没有任何业务逻辑,只是注册到Nacos注册中心上。

  1. 导入Nacos相关依赖

    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2021.0.5.0</version>
    </dependency>
    
  2. 增加Nacos相关配置

    spring:application:name: testdemocloud:nacos:discovery:enabled: truenamespace: publicusername: nacospassword: nacosserver-addr: 127.0.0.1:8848
    
  3. 启动项目,通过注册查看是否注册成功

    在这里插入图片描述

可以看到此时测试应用已经成功注册到nacos注册中心了。

3.新建获取服务列表的应用

新建一个应用,用于获取注册中心上的服务列表,新建一个spring boot项目。

  1. 导入Nacos相关依赖

    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2021.0.5.0</version>
    </dependency>
    
  2. 增加Nacos相关配置

    spring:application:name: getInstanceDemocloud:nacos:discovery:enabled: truenamespace: publicusername: nacospassword: nacosregister-enabled: false # 注意:该服务无需注册到注册中心上,只用于获取注册中心上的服务信息就行了server-addr: 127.0.0.1:8848
    
  3. 编写获取服务的测试逻辑

    import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
    import com.alibaba.nacos.api.exception.NacosException;
    import com.alibaba.nacos.api.naming.pojo.Instance;
    import com.alibaba.nacos.client.naming.NacosNamingService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;import javax.annotation.PostConstruct;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;@RestController
    public class InstanceController {/*** 获取nacos属性配置信息*/@Autowiredprivate NacosDiscoveryProperties nacosDiscoveryProperties;NacosNamingService nacosNamingService = null;@PostConstructpublic void init() throws NacosException {/*** 构建获取nacos服务信息*/nacosNamingService = new NacosNamingService(nacosDiscoveryProperties.getNacosProperties());}@RequestMapping("/getInstance")public Map<String, Object> getInstance() {Map<String, Object> resultMap = new HashMap<>();try {/*** 获取服务名称为testdemo的服务列表信息*/List<Instance> instances = nacosNamingService.getAllInstances("testdemo");resultMap.put("200", instances);} catch (NacosException e) {e.printStackTrace();resultMap.put("500", e.getMessage());}return resultMap;}}
    

正常启动服务。

4.测试

  1. 等服务都启动好以后,访问测试接口

在这里插入图片描述

可以看到,服务列表信息获取成功了。

  1. 本地停止测试注册服务testdemo,重新访问测试接口

    在这里插入图片描述

此时获取的服务列表为空了。

更多nacos使用方法可以参考nacos官方手册:https://nacos.io/docs/latest/what-is-nacos/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538886.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jsp在Javaweb中扮演什么角色?

1.什么是Jsp JSP&#xff08;Java Server Pages&#xff0c;Java 服务器页面&#xff09;是一种动态网页技术&#xff0c;它允许在 HTML 页面中嵌入 Java 代码&#xff0c;并由 Web 服务器在请求页面时动态生成 HTML 页面。JSP 通常用于创建动态 Web 内容&#xff0c;如交互式表…

2024.3.11 训练记录(14)

继续补题 文章目录 ICPC 2018青岛I Soldier GameICPC 2018青岛K Airdrop ICPC 2018青岛I Soldier Game 题目链接 线段树 果然稍微复杂一点的线段树就很难实现啊&#xff0c;不看题解根本没反应过来是线段树 struct Node {int l, r, lb, rb, nb, b; } tr[N * 4];其中&#x…

事物的传播属性

事务传播属性是Spring框架在处理事务时的一个重要概念&#xff0c;它定义了在事务方法被另一个事务方法调用时&#xff0c;如何处理事务边界的行为。这些属性是通过Spring的Transactional注解中的propagation属性来设置的。下面是几个常见的Spring事务传播属性&#xff1a; *RE…

迄今为止易用 —— 的 “盲水印“ 实现方案

前期回顾 网站的打赏 —— 新一代的思路-CSDN博客https://blog.csdn.net/m0_57904695/article/details/136704914?spm1001.2014.3001.5501 目录 CSDN 彩色之外 &#x1f4dd; 前言&#xff1a; &#x1f6e0;️ vue3-blind-watermark &#x1f916; 安装 ♻️ 引入&am…

C++特殊类设计【特殊类 || 单例对象 || 饿汉模式 || 懒汉模式】

目录 一&#xff0c;特殊类设计 1. 只在堆上创建的类 2. 只允许在栈上创建的类 3. 不能被继承的类 4. 不能被拷贝的类 5. 设计一个类&#xff0c;只能创建一个对象&#xff08;单例对象&#xff09; 饿汉模式 懒汉模式 C11静态成员初始化多线程安全问题 二&#xff…

实现微服务:匹配系统

HTTP与WebSocket协议 1. HTTP协议是无状态的&#xff0c;每次请求都是独立的&#xff0c;服务器不会保存客户端的状态信息。而WebSocket协议是有状态的&#xff0c;一旦建立连接后&#xff0c;服务器和客户端可以进行双向通信&#xff0c;并且可以保持连接状态&#xff0c;服务…

谈谈你对Java平台的理解?

从你接触 Java 开发到现在&#xff0c;你对 Java 最直观的印象是什么呢&#xff1f;是它宣传的 “Write once, run anywhere”&#xff0c;还是目前看已经有些过于形式主义的语法呢&#xff1f;你对于 Java 平台到底了解到什么程度&#xff1f;请你先停下来总结思考一下。 今天…

【Qt】常用控件或属性(1)

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、QWidget属性一览 二、控件button、属性enabled(可用状态) 三、属性geometry(修改位置和尺寸) 1、QRect类型的结…

mac系统下GCC优化编译的使用

mac系统下GCC优化编译的使用 编译流程 预处理&#xff1a;g -E homework.cpp -o homework.i 编译&#xff1a;g -S homework.i -o homework.s //.s为汇编文件 汇编&#xff1a;g -c homework.s -o homework.o 链接&#xff1a;g homework.o -o homework 优化选项 -O0&#…

4G安卓核心板T310_紫光展锐平台方案

紫光展锐T310应用 DynamlQ架构 12nm 制程工艺&#xff0c;采用 1*Cortex-A753*Cortex-A55处理器&#xff0c;搭载Android11.0操作系统&#xff0c;主频最高达2.0GHz.此外&#xff0c;DynamlQ融入了AI神经网络技术&#xff0c;新增机器学习指令&#xff0c;让其在运算方面的机器…

软件设计师17--磁盘管理

软件设计师17--磁盘管理 考点1&#xff1a;存储管理 - 磁盘管理调度算法磁盘调度 - FCFS磁盘调度 - SSTF例题&#xff1a; 考点1&#xff1a;存储管理 - 磁盘管理 存取时间寻道时间等待时间&#xff0c;训导时间是指磁头移动到磁道所需的时间&#xff1b;等待时间为等待读写的扇…

CC攻击详细

CC攻击是DDoS攻击的其中一种&#xff0c;是目前应用层攻击的主要手段之一&#xff0c;相比其它的DDoS攻击CC似乎更有技术含量一些。CC攻击借助代理服务器生成指向目标系统的合法请求&#xff0c;实现伪装和DDoS。我们都有这样的体验&#xff0c;访问一个静态页面&#xff0c;即…