您可以在 Go 程式中使用 Nacos Go SDK 管理 Nacos 配置,包括擷取、監聽、發布和刪除配置。
準備工作
公用參數
參數 | 參數類型 | 描述 |
ConfigParam.DataId |
String |
配置 ID,採用類似 package.class (如 com.taobao.tc.refund.log.level )的命名規則保證全域唯一性。建議根據配置的業務含義來定義 class 部分。全部字元均為小寫。只允許使用英文字元和 4 種特殊字元(“.”、“:”、“-”、“_”),不超過 256 位元組。 |
ConfigParam.Group |
String |
配置分組,建議填寫 產品名:模組名 (如 ACM:Test )來保證唯一性。只允許使用英文字元和 4 種特殊字元(“.”、“:”、“-”、“_”),不超過 128 位元組。 |
範例程式碼
Go
格式
說明 請將代碼中的 ${endpoint}、${namespace}、${accessKey}、${secretKey} 分別替換為 ACM 控制台上命名空間詳情對話方塊內的 End Point、命名空間 ID、AccessKey、SecretKey。出於安全考慮,建議使用 RAM 使用者的 AccessKey 和 SecretKey。
package main
import (
"fmt"
"github.com/nacos-group/nacos-sdk-go/clients"
"github.com/nacos-group/nacos-sdk-go/common/constant"
"github.com/nacos-group/nacos-sdk-go/vo"
"time"
)
func main() {
// 從控制台命名空間管理的"命名空間詳情"中拷貝 End Point、命名空間 ID
var endpoint = "${endpoint}"
var namespaceId = "${namespaceId}"
// 推薦使用 RAM 使用者的 accessKey、secretKey
var accessKey = "${accessKey}"
var secretKey = "${secretKey}"
clientConfig := constant.ClientConfig{
//
Endpoint: endpoint + ":8080",
NamespaceId: namespaceId,
AccessKey: accessKey,
SecretKey: secretKey,
TimeoutMs: 5 * 1000,
ListenInterval: 30 * 1000,
}
configClient, err := clients.CreateConfigClient(map[string]interface{}{
"clientConfig": clientConfig,
})
if err != nil {
fmt.Println(err)
return
}
var dataId = "com.alibaba.nacos.example.properties"
var group = "DEFAULT_GROUP"
// 發布配置
success, err := configClient.PublishConfig(vo.ConfigParam{
DataId: dataId,
Group: group,
Content: "connectTimeoutInMills=3000"})
if success {
fmt.Println("Publish config successfully.")
}
time.Sleep(3 * time.Second)
// 擷取配置
content, err := configClient.GetConfig(vo.ConfigParam{
DataId: dataId,
Group: group})
fmt.Println("Get config:" + content)
// 監聽配置
configClient.ListenConfig(vo.ConfigParam{
DataId: dataId,
Group: group,
OnChange: func(namespace, group, dataId, data string) {
fmt.Println("ListenConfig group:" + group + ", dataId:" + dataId + ", data:" + data)
},
})
// 刪除配置
success, err = configClient.DeleteConfig(vo.ConfigParam{
DataId: dataId,
Group: group})
if success {
fmt.Println("Delete config successfully.")
}
}