Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

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

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

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

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

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 非常感谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants