简介
代码
package main
import (
"encoding/json"
"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"
"log"
"net/http"
"github.com/gin-gonic/gin"
)
type Config struct {
Port int `json:"port"`
}
func main() {
// 创建serverConfig
// 支持多个;至少一个ServerConfig
serverConfig := []constant.ServerConfig{
{
IpAddr: "192.168.193.128",
Port: 8848,
},
}
// 创建clientConfig
clientConfig := constant.ClientConfig{
NamespaceId: "97b46c8b-81e6-4614-80fb-4fe5553590ca", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
TimeoutMs: 5000,
NotLoadCacheAtStart: true,
LogLevel: "debug",
}
// 创建动态配置客户端
configClient, err := clients.CreateConfigClient(map[string]interface{}{
"serverConfigs": serverConfig,
"clientConfig": clientConfig,
})
if err != nil {
log.Fatalf("初始化nacos失败: %s", err.Error())
}
// 获取配置
dataId := "gin.json"
group := "gin"
content, err := configClient.GetConfig(vo.ConfigParam{
DataId: dataId,
Group: group})
if err != nil {
log.Fatalf("获取%s配置失败: %s", dataId, err.Error())
}
var config = Config{}
err = json.Unmarshal([]byte(content), &config)
if err != nil {
log.Fatalf("解析%s配置失败: %s", dataId, err.Error())
}
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
_ = r.Run(fmt.Sprintf(":%d", config.Port))
}
测试