[alibaba/spring-cloud-alibaba]springboot 项目启动时无法正常获取nacos config 远程配置文件

2025-11-12 994 views
4

nacos config

遇到问题: springboot 项目启动时无法正常获取nacos config 远程配置文件

debug 跟踪代码排查

  1. NacosConfigDataLoader.doLoad 一路跟踪到LocalConfigInfoProcessor.getFailoverFile 发现程序在本地读取了不存在文件,然后继续跟踪到RpcClient.request 方法 抛出异常 throw new NacosException(-401, "Client not connected, current status:" + this.rpcClientStatus.get());

  1. 我尝试在启动springboot项目时http 调用 nacos config 接口可以正常访问返回数据

  2. 然后我将 nacos_client 版本回退到1.4.1可以正常获取配置文件

4.版本 spring-boot.version:2.7.11 spring-cloud.version:2021.0.5 spring-cloud-alibaba.version:2021.0.5.0 nacos.client.version1.4.1:2.2.1

不回退nacos_client版本如何可以正确获取到配置

回答

5

nacos 版本 2.2.0

1

方便提供一个可以复现问题的最小example吗?方便社区同学复现并解决问题!

8

https://github.com/mazimin/demo1 demo地址您看一下

namespace 配置有问题,可以直接指定命名空间的序列号或者是不指定,使用默认值

4

https://github.com/mazimin/demo1 demo地址您看一下

如下是我的测试结果:

2023-07-04 19:36:19.032  INFO 9952 --- [           main] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=demo1.yml, group=DEFAULT_GROUP
value:test

配置如下:

spring:
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        group: DEFAULT_GROUP
#        namespace: ${spring.profiles.active}
      config:
        group: DEFAULT_GROUP
#        namespace: ${spring.profiles.active}
        file-extension: yml
  config:
    import:
      - optional:nacos:${spring.application.name}.yml

启动类

    public static void main(String[] args) throws NacosException {
        SpringApplication.run(Demo1Application.class, args);
        NacosConfigManager bean = SpringUtils.getBean(NacosConfigManager.class);
        String default_group = bean.getConfigService().getConfig("demo1.yml", "DEFAULT_GROUP", 3000);
        System.out.println("value:" + default_group);
    }
2

配置

# Spring
spring:
  application:
    # 应用名称
    name: demo1
  profiles:
    # 环境配置
    active: ${RUN_ENV:dev}

--- # nacos 配置
spring:
  cloud:
    nacos:
      # nacos 服务地址
      server-addr: 8848.gr55a24e.y8ki2rcl.a19d84.grapps.cn:80
      discovery:
        # 注册组
        group: DEFAULT_GROUP
        namespace: ${spring.profiles.active}
      config:
        # 配置组
        group: DEFAULT_GROUP
        namespace: ${spring.profiles.active}
        # 配置文件格式
        file-extension: yml
  config:
    import:
      - optional:nacos:${spring.application.name}.yml

启动类

@SpringBootApplication
public class Demo1Application {

    public static void main(String[] args) throws NacosException {
        SpringApplication.run(Demo1Application.class, args);
        NacosConfigManager bean = SpringUtils.getBean(NacosConfigManager.class);
        String default_group = bean.getConfigService().getConfig("demo1.yml", "DEFAULT_GROUP", 3000);
        System.out.println(default_group);
    }
}

这是我的namespace 运行结果

2023-07-04 20:19:00.802  INFO 32120 --- [           main] com.example.demo.Demo1Application        : The following 1 profile is active: "dev"
2023-07-04 20:19:00.823  WARN 32120 --- [           main] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] config[dataId=demo1.yml, group=DEFAULT_GROUP] is empty
2023-07-04 20:19:00.823 DEBUG 32120 --- [           main] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] config[dataId=demo1.yml, group=DEFAULT_GROUP] content: 
null

只要一降client 版本就正常 升级回来 就无法获取

2

将本地缓存的配置文件清空重新启动项目可以复现

5

不好意思,我没太理解您的问题? 是说,使用 nacos 的版本是 1.4 可以正常读取到配置。将 1.4 升级到 2.2 就没办法读取到配置了?

2

不好意思,我没太理解您的问题? 是说,使用 nacos 的版本是 1.4 可以正常读取到配置。将 1.4 升级到 2.2 就没办法读取到配置了?

是的 升级之后启动时无法读取配置

0

不好意思,我没太理解您的问题? 是说,使用 nacos 的版本是 1.4 可以正常读取到配置。将 1.4 升级到 2.2 就没办法读取到配置了?

是的 升级之后启动时无法读取配置

用的sca和sb的版本没有相应升级吗?尽量去参考sca的版本说明去搭配组件使用,这些意料之外的问题,我们也没太多精力解决。至少在版本说明的版本情况下,我们的组件可以正常使用,你可以参考nacos配置中心的示例。

3

不好意思,我没太理解您的问题? 是说,使用 nacos 的版本是 1.4 可以正常读取到配置。将 1.4 升级到 2.2 就没办法读取到配置了?

是的 升级之后启动时无法读取配置

用的sca和sb的版本没有相应升级吗?尽量去参考sca的版本说明去搭配组件使用,这些意料之外的问题,我们也没太多精力解决。至少在版本说明的版本情况下,我们的组件可以正常使用,你可以参考nacos配置中心的示例。

spring-boot.version:2.7.11 spring-cloud.version:2021.0.5 spring-cloud-alibaba.version:2021.0.5.0 nacos.client.version:2.2.0

这个是我的sca 和 sb 版本 都是按照 版本说明升级的 然后nacos server 2.2.1

2

不好意思,我没太理解您的问题? 是说,使用 nacos 的版本是 1.4 可以正常读取到配置。将 1.4 升级到 2.2 就没办法读取到配置了?

是的 升级之后启动时无法读取配置

用的sca和sb的版本没有相应升级吗?尽量去参考sca的版本说明去搭配组件使用,这些意料之外的问题,我们也没太多精力解决。至少在版本说明的版本情况下,我们的组件可以正常使用,你可以参考nacos配置中心的示例。

spring-boot.version:2.7.11 spring-cloud.version:2021.0.5 spring-cloud-alibaba.version:2021.0.5.0 nacos.client.version:2.2.0

这个是我的sca 和 sb 版本 都是按照 版本说明升级的 然后nacos server 2.2.1

你使用 nacos 版本是 1.4.x 也是这个配置吗?这个组件配置是没有问题的,可以参考示例 example

4

sca 和 sb 版本就是按照官网文档配置的 配置完毕之后正常 更换了一个nacos server 之后才出现的这些问题 出现问题之后 其他版本没有变的情况下 只动了nacos client 版本 读取配置恢复正常 但是低版本的 nacos client又和dubbo 版本不兼容了

8

现在 sca 不推荐和dubbo一起使用了。 参考 https://github.com/alibaba/spring-cloud-alibaba/issues/2398 我们不保证除了版本说明之外的nacos版本的使用情况。降nacos版本,幅度这么大,肯定会有适配问题的,社区也保证不了正常使用

3

现在 sca 不推荐和dubbo一起使用了。 参考 #2398 我们不保证除了版本说明之外的nacos版本的使用情况。降nacos版本,幅度这么大,肯定会有适配问题的,社区也保证不了正常使用

好的 感谢帮忙排查 我在去在继续按照版本对应调整一下 感谢

4

现在 sca 不推荐和dubbo一起使用了。 参考 #2398 我们不保证除了版本说明之外的nacos版本的使用情况。降nacos版本,幅度这么大,肯定会有适配问题的,社区也保证不了正常使用

好的 感谢帮忙排查 我在去在继续按照版本对应调整一下 感谢

不客气