概述部分
Maven 坐标
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<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。 |
傳回值
請求示例
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 |
傳回參數
請求示例
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 | 配置分組 |
傳回參數
請求示例
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();
}
異常說明