- <dependency>
- <groupId>com.alibaba.nacosgroupId>
- <artifactId>nacos-clientartifactId>
- <version>${version}version>
- dependency>
1.X 版本最新java SDK为 1.4.4版本
用于服务启动的时候从 Nacos 获取配置
public String getConfig(String dataId, String group, long timeoutMs) throws NacosException
参数名 | 参数类型 | 描述 |
---|---|---|
dataId | string | 配置 ID,采用类似 package.class(如com.taobao.tc.refund.log.level)的命名规则保证全局唯一性,class 部分建议是配置的业务含义。全部字符小写。只允许英文字符和 4 种特殊字符("."、":"、"-"、"_"),不超过 256 字节。 |
group | string | 配置分组,建议填写产品名:模块名(Nacos:Test)保证唯一性,只允许英文字符和4种特殊字符("."、":"、"-"、"_"),不超过128字节。 |
timeout | long | 读取配置超时时间,单位 ms,推荐值 3000。 |
参数类型 | 描述 |
---|---|
string | 配置值 |
- try {
- String serverAddr = "{serverAddr}";
- String dataId = "{dataId}";
- String group = "{group}";
- Properties properties = new Properties();
- properties.put("serverAddr", serverAddr);
- ConfigService configService = NacosFactory.createConfigService(properties);
- String content = configService.getConfig(dataId, group, 5000);
- System.out.println(content);
- } catch (NacosException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
读取配置超时或网络异常,抛出 NacosException 异常。
如果希望 Nacos 推送配置变更,可以使用 Nacos 动态监听配置接口来实现。
public void addListener(String dataId, String group, Listener listener)
参数名 | 描述 | |
dataId | string | 配置 ID,采用类似 package.class(如com.taobao.tc.refund.log.level)的命名规则保证全局唯一性,class 部分建议是配置的业务含义。 全部字符小写。只允许英文字符和 4 种特殊字符("."、":"、"-"、"_")。不超过 256 字节。 |
group | string | 配置分组,建议填写产品名:模块名(如 Nacos:Test)保证唯一性。 只允许英文字符和4种特殊字符("."、":"、"-"、"_"),不超过128字节。 |
listener | Listener | 监听器,配置变更进入监听器的回调函数。 |
参数类型 | 描述 |
---|---|
string | 配置值,初始化或者配置变更的时候通过回调函数返回该值。 |
- String serverAddr = "{serverAddr}";
- String dataId = "{dataId}";
- String group = "{group}";
- Properties properties = new Properties();
- properties.put("serverAddr", serverAddr);
- ConfigService configService = NacosFactory.createConfigService(properties);
- String content = configService.getConfig(dataId, group, 5000);
- System.out.println(content);
- configService.addListener(dataId, group, new Listener() {
- @Override
- public void receiveConfigInfo(String configInfo) {
- System.out.println("recieve1:" + configInfo);
- }
- @Override
- public Executor getExecutor() {
- return null;
- }
- });
-
- // 测试让主线程不退出,因为订阅配置是守护线程,主线程退出守护线程就会退出。 正式代码中无需下面代码
- while (true) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
取消监听配置,取消监听后配置不会再推送。
参数名 | 参数类型 | 描述 |
---|---|---|
dataId | string | 配置 ID,采用类似 package.class(如com.taobao.tc.refund.log.level)的命名规则保证全局唯一性,class 部分建议是配置的业务含义。全部字符小写。只允许英文字符和 4 种特殊字符("."、":"、"-"、"_"),不超过 256 字节。 |
group | string | 配置分组 |
listener | ConfigChangeListenerAdapter | 监听器,配置变更进入监听器的回调函数。 |
- String serverAddr = "{serverAddr}";
- String dataId = "{dataId}";
- String group = "{group}";
- Properties properties = new Properties();
- properties.put("serverAddr", serverAddr);
- ConfigService configService = NacosFactory.createConfigService(properties);
- configService.removeListener(dataId, group, yourListener);
用于通过程序自动发布 Nacos 配置,以便通过自动化手段降低运维成本。
注意:创建和修改配置时使用的同一个发布接口,当配置不存在时会创建配置,当配置已存在时会更新配置。
- public boolean publishConfig(String dataId, String group, String content) throws NacosException;
-
- @Since 1.4.1
- public boolean publishConfig(String dataId, String group, String content, String type) throws NacosException;
参数名 | 参数类型 | 描述 |
---|---|---|
dataId | string | 配置 ID,采用类似 package.class (如 com.taobao.tc.refund.log.level )的命名规则保证全局唯一性。建议根据配置的业务含义来定义 class 部分。全部字符均为小写。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“_”),不超过 256 字节。 |
group | string | 配置分组,建议填写产品名:模块名 (如 Nacos:Test )来保证唯一性。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“_”),不超过 128 字节。 |
content | string | 配置内容,不超过 100K 字节。 |
type | string | @Since 1.4.1. 配置类型,见 com.alibaba.nacos.api.config.ConfigType ,默认为TEXT |
参数类型 | 描述 |
---|---|
boolean | 是否发布成功 |
- try {
- // 初始化配置服务,控制台通过示例代码自动获取下面参数
- String serverAddr = "{serverAddr}";
- String dataId = "{dataId}";
- String group = "{group}";
- Properties properties = new Properties();
- properties.put("serverAddr", serverAddr);
- ConfigService configService = NacosFactory.createConfigService(properties);
- boolean isPublishOk = configService.publishConfig(dataId, group, "content");
- System.out.println(isPublishOk);
- } catch (NacosException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
读取配置超时或网络异常,抛出 NacosException 异常。
用于通过程序自动删除 Nacos 配置,以便通过自动化手段降低运维成本。
注意: 当配置已存在时会删除该配置,当配置不存在时会直接返回成功消息。
public boolean removeConfig(String dataId, String group) throws NacosException
参数名 | 参数类型 | 描述 |
---|---|---|
dataId | string | 配置 ID |
group | string | 配置分组 |
参数类型 | 描述 |
---|---|
boolean | 是否删除成功 |
- try {
- // 初始化配置服务,控制台通过示例代码自动获取下面参数
- String serverAddr = "{serverAddr}";
- String dataId = "{dataId}";
- String group = "{group}";
- Properties properties = new Properties();
- properties.put("serverAddr", serverAddr);
-
- ConfigService configService = NacosFactory.createConfigService(properties);
- boolean isRemoveOk = configService.removeConfig(dataId, group);
- System.out.println(isRemoveOk);
- } catch (NacosException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
读取配置超时或网络异常,抛出 NacosException 异常。