需要在现有的运维平台上支持 nacos 配置中心的自动化管理(CRUD,发布),但实际过程中发现两个小地方需要注意一下,免得采坑。
环境版本
Nacos Server : 1.4.1
Nacos Java 客户端: 1.4.1
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.4.1</version>
</dependency>
复制代码
问题描述
1.对 namespace:public 的配置文件进行增/修改,代码运行返回 true(结果正常),但管理后台确没有看到对应的内容。
Properties properties = new Properties();
properties.put(PropertyKeyConst.NAMESPACE, 'public');
properties.put(PropertyKeyConst.SERVER_ADDR, SERVER_ADDR);
properties.put("username","nacos");
properties.put("password","nacos");
ConfigService configService = NacosFactory.createConfigService(properties);
return configService.publishConfig(dataId , group , configurationContent , "yaml");
复制代码
引起不生效的原因:对 public 进行操作,不需要设置 namespace 的值。
正确代码
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, SERVER_ADDR);
properties.put("username","nacos");
properties.put("password","nacos");
ConfigService configService = NacosFactory.createConfigService(properties);
return configService.publishConfig(dataId , group , configurationContent , "yaml");
复制代码
2.对 namespace:test(其它值一样)的配置文件进行增/修改,代码运行返回 true(结果正常),但管理后台确没有看到对应的内容
Properties properties = new Properties();
properties.put(PropertyKeyConst.NAMESPACE, 'test');
properties.put(PropertyKeyConst.SERVER_ADDR, SERVER_ADDR);
properties.put("username","nacos");
properties.put("password","nacos");
ConfigService configService = NacosFactory.createConfigService(properties);
return configService.publishConfig(dataId , group , configurationContent , "yaml");
复制代码
引起不生效的原因:对其它 namespace 的属性传值,不应该传 namespace 的名字(name),而是传 namespace 的 id。
namespace 的 id 获取位置:
nacos 文档地址:Java SDK
评论