Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Nacos配置中心 无法加载配置 #3904

Open
Johnson-Jia opened this issue Nov 26, 2024 · 14 comments
Open

Nacos配置中心 无法加载配置 #3904

Johnson-Jia opened this issue Nov 26, 2024 · 14 comments
Labels
area/nacos spring cloud alibaba nacos stale

Comments

@Johnson-Jia
Copy link

Spring Cloud Alibaba 2023.0.1.3
Spring Cloud 2023.0.3.
Spring Boot 3.2.11
JDK21
spring-cloud-starter-alibaba-nacos-config 2023.0.1.3

nacos 配置中心的配置加载不到

@Comven
Copy link

Comven commented Nov 27, 2024

2023.0.1.3取消了默认拉取配置方式需要采用spring-config.import来拉取的配置

spring.config.import[0]=nacos:${spring.application.name}
spring.config.import[1]=nacos:${spring.application.name}.properties

@Johnson-Jia
Copy link
Author

Johnson-Jia commented Nov 27, 2024

@Comven 我试了,还是不行,加载不到 nacos 里面的配置。
另外,com.alibaba.cloud.nacos.NacosConfigProperties 这个类的 @ConfigurationProperties(NacosConfigProperties.PREFIX) 为什么要去掉呢?

@Comven
Copy link

Comven commented Nov 27, 2024

检查一下nacos的配置名称是否跟spring-config.import的一样,还有配置中心的namespace也必须配置,虽然现在在2023.0.1.3版本会报警告。

关于那个类移除的问题,有其他人反馈了,等待后边正式发布看是否修复。你看下这几个issue吧 #3898 #3882

@Johnson-Jia
Copy link
Author

谢谢 @Comven 解决了,需要按照如下方式配置方可读取到数据。我个人感觉配置起来还是相对比较麻烦的,不够友好。

spring.config.import[0]=nacos:application.properties?refresh=true
spring.config.import[1]=nacos:${spring.application.name}.properties?refresh=true

spring.cloud.nacos.config.server-addr=172...19:8848
spring.cloud.nacos.config.fileExtension=properties
spring.cloud.nacos.config.namespace=0b6f9df0-*********-260a83726ff5

spring.cloud.nacos.config.shared-configs[0].data-id=${spring.application.name}.properties
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].refresh=true

spring.cloud.nacos.config.shared-configs[1].data-id=application.properties
spring.cloud.nacos.config.shared-configs[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[1].refresh=true

@shiyiyue1102
Copy link
Contributor

shiyiyue1102 commented Nov 28, 2024

spring.cloud.nacos.config.shared-configs[0].data-id=${spring.application.name}.properties
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].refresh=true

spring.cloud.nacos.config.shared-configs[1].data-id=application.properties
spring.cloud.nacos.config.shared-configs[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[1].refresh=true

shared-configs 已经不推荐使用,未来版本会废弃,统一通过spring.config.import进行导入

spring.config.import[0]=nacos:${spring.application.name}.properties?group=DEFAULT_GROUP&refreshEnabled=true
spring.config.import[1]=nacos:application.properties?group=DEFAULT_GROUP&refreshEnabled=true
spring.config.import[2]=nacos:{dataId}?group={group}&refreshEnabled=true
......

@shiyiyue1102
Copy link
Contributor

shiyiyue1102 commented Nov 28, 2024

@Comven 我试了,还是不行,加载不到 nacos 里面的配置。 另外,com.alibaba.cloud.nacos.NacosConfigProperties 这个类的 @ConfigurationProperties(NacosConfigProperties.PREFIX) 为什么要去掉呢?

ConfigurationProperties 注解将NacosConfigProperties发布为了一个SpringBean,但是实际上spring cloud alibaba加载nacos的时间点是在所有Bean开始初始化前进行,将nacos中的属性加载为PropertiesSource,其内部会创建一个NacosConfigProperties对象,但并不是一个SpringBean, 将NacosConfigProperties发布为一个SpringBean并没有实际用途,SCA和Nacos交互是并不依赖该Spring Bean,后续版本会对内部的组件进行进一步简化

@zxuanhong
Copy link

zxuanhong commented Nov 28, 2024

@shiyiyue1102 @Comven 我也是试了,还是不行。感觉弄得越来越麻烦了,配置文件应该越简单越好。而且这个拼接参数个数越多就越长,整得像长城一样,一眼看不到头(说实话,也不知道咋想的)
image
image

  1. 日志信息(提示up-realty-process-yplx.yml为 null,我上面截图不是明明有的吗??难不成命名空间参数错了??不是namespace)
2024-11-28 18:09:10  WARN 21969 --- [up-realty-process] [           main] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] config[dataId=up-realty-process-yplx.yml, group=DEFAULT_GROUP] is empty
2024-11-28 18:09:10 DEBUG 21969 --- [up-realty-process] [           main] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] config[dataId=up-realty-process-yplx.yml, group=DEFAULT_GROUP] content: 
null

@herodotus-ecosystem
Copy link

我的配置,目前还是在 bootstrap.yml 中配置,暂时没发现什么问题。

# spring cloud alibaba 基础设施配置
spring:
  config:
    activate:
      on-profile: alibaba
    import:
      - nacos:dante-cloud-environment.yaml?group=${PROFILE:@profile@}
      - nacos:dante-cloud-platform.yaml?group=common
      - nacos:dante-cloud-database-${DATABASE:@database@}.yaml?group=common
      - nacos:dante-cloud-database.yaml?group=common
      - nacos:dante-cloud-redis.yaml?group=common
      - nacos:dante-cloud-cache.yaml?group=common
      - nacos:dante-cloud-rest.yaml?group=common
      - nacos:dante-cloud-kafka.yaml?group=common
      - nacos:${spring.application.name}.yaml?group=service
  cloud:
    nacos:
      username: ${ALIBABA_USERNAME:@alibaba.username@}
      password: ${ALIBABA_PASSWORD:@alibaba.password@}
      config:
        namespace: ${ALIBABA_NAMESPACE:@alibaba.namespace@}
        server-addr: ${ALIBABA_CONFIG_SERVER_ADDR:@alibaba.config.server-addr@}
        file-extension: yaml
      discovery:
        namespace: ${ALIBABA_NAMESPACE:@alibaba.namespace@}
        server-addr: ${ALIBABA_DISCOVERY_SERVER_ADDR:@alibaba.discovery.server-addr@}
    sentinel:
      transport:
        port: 8719
        dashboard: ${ALIBABA_SENTINEL_SERVER_ADDR:@alibaba.sentinel.server-addr@}

代码地址,参见

@shiyiyue1102
Copy link
Contributor

@shiyiyue1102 @Comven 我也是试了,还是不行。感觉弄得越来越麻烦了,配置文件应该越简单越好。而且这个拼接参数个数越多就越长,整得像长城一样,一眼看不到头(说实话,也不知道咋想的) image image

  1. 日志信息(提示up-realty-process-yplx.yml为 null,我上面截图不是明明有的吗??难不成命名空间参数错了??不是namespace)
2024-11-28 18:09:10  WARN 21969 --- [up-realty-process] [           main] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] config[dataId=up-realty-process-yplx.yml, group=DEFAULT_GROUP] is empty
2024-11-28 18:09:10 DEBUG 21969 --- [up-realty-process] [           main] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] config[dataId=up-realty-process-yplx.yml, group=DEFAULT_GROUP] content: 
null

指定spring.cloud.nacos.config.namespace=xxx. 指定命名空间ID,不设置的情况加载的是public命名空间下的配置,
spring.config.import是spring官方推出的加载外部属性源的方式,spring cloud alibaba是遵循spring官方的标准,未来也会统一收口到只支持这一种方式

@zxuanhong
Copy link

@shiyiyue1102 非常感谢

@yuluo-yx yuluo-yx added the area/nacos spring cloud alibaba nacos label Dec 4, 2024
@zxuanhong
Copy link

@herodotus-ecosystem 问题出在没配置namespace。现在是2023.0.3.2版本,上一个版本 config 中的namespace在 spring 中元数据没生成导致 idea 提示没这个配置。

@leifengyang
Copy link

spring.cloud.nacos.config.shared-configs[0].data-id=${spring.application.name}.properties spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP spring.cloud.nacos.config.shared-configs[0].refresh=true

spring.cloud.nacos.config.shared-configs[1].data-id=application.properties spring.cloud.nacos.config.shared-configs[1].group=DEFAULT_GROUP spring.cloud.nacos.config.shared-configs[1].refresh=true

shared-configs 已经不推荐使用,未来版本会废弃,统一通过spring.config.import进行导入

spring.config.import[0]=nacos:${spring.application.name}.properties?group=DEFAULT_GROUP&refreshEnabled=true spring.config.import[1]=nacos:application.properties?group=DEFAULT_GROUP&refreshEnabled=true spring.config.import[2]=nacos:{dataId}?group={group}&refreshEnabled=true ......

@shiyiyue1102 请问这种方式,如何实现nacos以前激活 dev 环境,自动加载 application-dev.properties 文件。是需要自己拆分多个 bootstrap-{profile}.yml 文件吗?

@rowstop
Copy link

rowstop commented Jan 18, 2025

我的配置,目前还是在 bootstrap.yml 中配置,暂时没发现什么问题。

spring cloud alibaba 基础设施配置

spring:
config:
activate:
on-profile: alibaba
import:
- nacos:dante-cloud-environment.yaml?group=${PROFILE:@Profile@}
- nacos:dante-cloud-platform.yaml?group=common
- nacos:dante-cloud-database-${DATABASE:@database@}.yaml?group=common
- nacos:dante-cloud-database.yaml?group=common
- nacos:dante-cloud-redis.yaml?group=common
- nacos:dante-cloud-cache.yaml?group=common
- nacos:dante-cloud-rest.yaml?group=common
- nacos:dante-cloud-kafka.yaml?group=common
- nacos:${spring.application.name}.yaml?group=service
cloud:
nacos:
username: ${ALIBABA_USERNAME:@alibaba.username@}
password: ${ALIBABA_PASSWORD:@alibaba.password@}
config:
namespace: ${ALIBABA_NAMESPACE:@alibaba.namespace@}
server-addr: ${ALIBABA_CONFIG_SERVER_ADDR:@alibaba.config.server-addr@}
file-extension: yaml
discovery:
namespace: ${ALIBABA_NAMESPACE:@alibaba.namespace@}
server-addr: ${ALIBABA_DISCOVERY_SERVER_ADDR:@alibaba.discovery.server-addr@}
sentinel:
transport:
port: 8719
dashboard: ${ALIBABA_SENTINEL_SERVER_ADDR:@alibaba.sentinel.server-addr@}
代码地址,参见

都这样改了 spring.cloud.nacos.config.file-extension 这个配置还有什么作用,未来也要移除的喽?

Copy link

This issue has been open 30 days with no activity. This will be closed in 7 days.

@github-actions github-actions bot added the stale label Feb 17, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
area/nacos spring cloud alibaba nacos stale
Projects
None yet
Development

No branches or pull requests

8 participants