您可以在 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命名空间 IDAccessKeySecretKey。出于安全考虑,建议使用 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.")
    }

}           

更多信息