天天看點

雲原生之nacos 配置SDK解讀

概述部分

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。

傳回值

參數類型 描述
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 配置分組

傳回參數

參數類型 描述

請求示例

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();
}      

異常說明