在使用 Spring Cloud Alibaba 集成 Nacos 时遇到 [Nacos Config] config[dataId=xxx, group=DEFAULT_GROUP] is empty
错误通常表示 Nacos 配置中心中没有找到对应 dataId
和 group
的配置信息,启动信息报错如下:
1,检查Nacos是否已经配置正确:
2,检查application.yml
3,发现配置均正常,那么需要详细去判断一下
c.a.c.n.c.NacosConfigDataLoader : [Nacos Config] config[dataId=test.yml, group=DEFAULT_GROUP] is empty
4,可以从报错信息入手,进入NacosConfigDataLoader查看
5,通过Debug跟踪代码,最后找到这里NacosConfigService::getConfigInner,打断点调试:
ErrCode:-401, ErrMsg:Client not connected, current status:STARTING
6,发现是连接不上服务端,从网上查找原因发现:
从2.x版本开始,nacos分成了两个端口:8848和9848。
Nacos在升级到2.x版本后,对端口的使用进行了调整,新增了端口9848作为管理端口(Management Port),而原有的8848端口继续用于服务发现和配置管理。这一变化主要是为了区分Nacos的管理功能和服务发现、配置管理功能,提高系统的可用性和安全性。具体来说:
- 端口8848:这是Nacos原先的端口,继续用于服务发现和配置管理。这个端口是Nacos的核心功能,用于服务的注册和发现,以及配置信息的存储和获取。
- 端口9848:这是在2.x版本中新增的管理端口,用于Nacos的管理功能。通过这个端口,可以进行一些管理操作,比如查看集群状态、配置管理和服务管理等。这个端口的引入是为了将管理功能与核心服务发现和配置管理功能分离,以此来提高系统的整体安全性和可维护性。
需要注意的是,在使用Nacos 2.x版本时,需要确保这两个端口都已经在服务器上开放,并且在安全组和防火墙中也相应地开放这些端口,以保证Nacos能够正常工作。如果你的Spring Boot项目正在使用Nacos,也需要将项目中的server-adr端口改成9848,以适配新版本的端口变化。
7,开启9848端口和防火墙
8,修改完成之后,再次启动项目,发现是正常读取到