nacos 默认 namespace: public 拿不到数据

nacos 是阿里开源的配置中心/注册中心组件

在spring-boot项目中, 可以使用下面的方法启动nacos config

nacos:
  config:
# 使用namespace=public时, 这里不能显示指定. 否则会拿不到数据
#    namespace: public
    username: admin
    password: 12345678
    server-addr: 10.0.18.92:8848
    group: ${spring.profiles.active}
# common 放通用配置, 可以被${spring.application.name}覆盖
    data-ids: ${spring.application.name},common
    type: YAML
    auto-refresh: true
    remote-first: true
    enable-remote-sync-config: true
    config-long-poll-timeout: 45000
    max-retry: 10
    config-retry-time: 3500
    bootstrap:
# 开启log
      enable: true
      log-enable: true

最坑的就是这个 

namespace: public

public是系统默认的namespace

但是不能在这里制定, 否则会造成nacos客户端向nacos server拿不到config的情况. 

这是nacos的一个bug(可以说是命名不规范吧), 具体可以参考其源码

com.alibaba.nacos.client.config.impl.ClientWorker#getServerConfig

    public String[] getServerConfig(String dataId, String group, String tenant, long readTimeout)
            throws NacosException {
        String[] ct = new String[2];
        if (StringUtils.isBlank(group)) {
            group = Constants.DEFAULT_GROUP;
        }
        
        HttpRestResult result = null;
        try {
            Map params = new HashMap(3);
            if (StringUtils.isBlank(tenant)) {
                params.put("

你可能感兴趣的:(nacos,java,spring,boot)