解决:Nacos无法获取远程配置数据,导致项目启动各种配置异常

一·问题描述:

1.项目pom依赖版本:

在这里插入图片描述

2.bootstrap.yml配置信息

在这里插入图片描述

3.远程配置:默认public命名空间

在这里插入图片描述

4.启动报异常,显示没有配置数据源,实际远程已经配置了,也就是说没有成功拉取到远程配置数据

在这里插入图片描述

二·问题原因:

1.远程配置文件的DataId没有加yaml后缀名,导致项目获取远程配置数据失败,从而引发项目启动异常

三·解决方案:

1.注意SpringCloud、SpringCloudAlibaba、SpringBoot、Nacos的组件版本匹配

1-1 推荐两套版本组合依赖:

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
    <!--    第一套版本组合-->
    <!--        <spring.boot.version>3.0.2</spring.boot.version>-->
    <!--        <spring.cloud.version>2022.0.0</spring.cloud.version>-->
    <!--        <spring.cloud.alibaba.version>2022.0.0.0-RC2</spring.cloud.alibaba.version>-->

    <!--    第二套版本组合-->
    <spring.boot.version>3.3.0</spring.boot.version>
    <spring.cloud.version>2023.0.2</spring.cloud.version>
    <spring.cloud.alibaba.version>2023.0.1.0</spring.cloud.alibaba.version>
</properties>

<dependencyManagement>
<dependencies>
    <!--springboot 依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <!--springcloud 依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring.cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <!--springcloud alibaba 依赖-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${spring.cloud.alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencies>
</dependencyManagement>

1-2 SpringCloudAlibaba与各种组件版本匹配图

在这里插入图片描述

1-3 SpringCloud与SpringBoot版本匹配图

在这里插入图片描述

2.本地bootstrap.yml配置规范-示例:

server:
  port: 9004
spring:
  application:
    name: cloud-nacos-config-consumer-9004
  profiles:
    #激活dev环境配置
    active: dev
  #Springcloud配置
  cloud:
    #nacos配置
    nacos:
      #配置中心配置
      config:
        #nacos配置中心地址:跟注册地址一样,会自动从远程拉取配置文件应用
        server-addr: 127.0.0.1:8848
        #配置文件后缀格式
        file-extension: yaml
#        namespace: Dev-NameSpace
#        group: DEFAULT_GROUP
#        username: nacos
#        password: nacos
      #服务注册配置
      discovery:
        # nacos服务注册中心地址:本应用将会注册在下面这个地址服务上面,nacos本身也是一个单独的服务应用
        server-addr: 127.0.0.1:8848
#        namespace: Dev-NameSpace
#        group: DEFAULT_GROUP

3.远程配置文件取名要规范:

nacos会自动根据规则从远程配置中心拉取数据:命名空间-分组-DataId,然后再与本地application配置文件整合,从而形成最终配置数据(远程配置 > 本地配置

3-1 Data ID拼接格式:${prefix} - ${spring.profiles.active} . ${file-extension},

  • prefix:默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置

  • spring.profiles.active:取 spring.profiles.active 的值,即为当前环境对应的 profile

  • file-extension:为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension 来配置

3-2 Group:

Group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 来配置,当配置项太多或者有重名时,可以通过分组来方便管理

3-3 NameSpace(命名空间):

NameSpace 默认为 public,可以通过 spring.cloud.nacos.config.namespace 来配置,当配置项太多或者有重名时,可以通过命名空间来方便管理

3-4 远程配置文件DataId必须加上yaml后缀名:否则会出现获取不到远程配置异常

在这里插入图片描述

4.项目启动类配置nacos服务注册发现注解:

在这里插入图片描述

四·验证:启动服务成功!在这里插入图片描述

Spring Boot中使用Nacos获取配置信息时,可能会遇到无法读取Nacos上的配置文件的问题。这个问题可能有几个原因导致。 首先,要确保配置中心的格式正确。配置应该写在bootstrap.yml文件中,因为bootstrap.yml文件会在application.yml之前加载。在配置中,需要注意一些参数的含义,比如namespace是Nacos的命名空间ID,而不是命名空间的名称。另外,需要检查server-addr参数是否正确配置Nacos的地址,以及group和file-extension参数的设置。 其次,如果无法获取配置,可能是Nacos的版本和启动方式有关。如果使用的是Nacos 2.0版本,并且是通过Docker容器启动的,需要确保映射的端口号包括8848、9848和9849。具体的增加映射端口的方法可以参考Nacos的官方文档。 最后,还需要检查一下代码是否正确获取配置中心的配置。可以确保参数设置正确,比如namespace对应的是Nacos中的命名空间ID,而不是名称。此外,还可以检查一下Nacos的日志,看是否有相关的错误信息。 综上所述,要解决无法获取Nacos配置的问题,可以按照以下步骤进行排查: 1. 检查配置中心的格式是否正确,是否写在了bootstrap.yml文件中。 2. 确保配置的参数设置正确,比如server-addr、namespace、group等。 3. 检查Nacos的版本和启动方式,确保映射的端口号正确。 4. 检查代码中获取配置的逻辑是否正确。 5. 检查Nacos的日志,看是否有相关的错误信息。 通过以上步骤的排查,应该能够解决无法获取Nacos配置的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot 2.6.6读不到nacos上的配置文件](https://blog.csdn.net/WATXZDN/article/details/128629068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [springboot+nacos配置中心获取配置失败](https://blog.csdn.net/zfyymmd/article/details/128623918)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [lamp-cloud微服务脚手架](https://download.csdn.net/download/AA19922008/33509376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ideal-cs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值