go集成nacos
·
简介
代码
获取配置


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"
"log"
)
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 := "test.yaml"
group := "test"
content, err := configClient.GetConfig(vo.ConfigParam{
DataId: dataId,
Group: group})
if err != nil {
log.Fatalf("获取%s配置失败: %s", dataId, err.Error())
}
fmt.Println(content)
}

监听配置变化

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"
"log"
"time"
)
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 := "test.yaml"
group := "test"
content, err := configClient.GetConfig(vo.ConfigParam{
DataId: dataId,
Group: group})
if err != nil {
log.Fatalf("获取%s配置失败: %s", dataId, err.Error())
}
fmt.Println(content)
// 监听配置变化
err = configClient.ListenConfig(vo.ConfigParam{
DataId: dataId,
Group: group,
OnChange: func(namespace, group, dataId, data string) {
fmt.Println("监听到变化")
fmt.Println("group:" + group + ", dataId:" + dataId)
fmt.Println("data: ", data)
},
})
if err != nil {
log.Fatalf("获取%s配置失败: %s", dataId, err.Error())
}
// 休眠300s,避免函数马上结束来不及测试监听
time.Sleep(300 * time.Second)
}

错误测试
故意将nacos端口写错,看一下还能不能读到配置
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"
"log"
"time"
)
func main() {
// 创建serverConfig
// 支持多个;至少一个ServerConfig
serverConfig := []constant.ServerConfig{
{
IpAddr: "192.168.193.128",
Port: 8849,
},
}
// 创建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 := "test.yaml"
group := "test"
content, err := configClient.GetConfig(vo.ConfigParam{
DataId: dataId,
Group: group})
if err != nil {
log.Fatalf("获取%s配置失败: %s", dataId, err.Error())
}
fmt.Println(content)
// 监听配置变化
err = configClient.ListenConfig(vo.ConfigParam{
DataId: dataId,
Group: group,
OnChange: func(namespace, group, dataId, data string) {
fmt.Println("监听到变化")
fmt.Println("group:" + group + ", dataId:" + dataId)
fmt.Println("data: ", data)
},
})
if err != nil {
log.Fatalf("获取%s配置失败: %s", dataId, err.Error())
}
// 休眠300s,避免函数马上结束来不及测试监听
time.Sleep(300 * time.Second)
}

后台会报错,但是还是读到了配置文件,主要是因为这里使用到了缓存,每次启动会默认创建log和cache两个文件夹,保存着历史读取,当nacos连接不上时,会从cache文件夹下读取对应的配置文件


更多推荐
所有评论(0)