Go集成Nacos
go get -u github.com/nacos-group/nacos-sdk-go
GO Service配置 与SpringCloud 服务使用同一个Metadata 配置属性源
func Service(configs []constant.ServerConfig, serverName, group string, serverPort uint64) {
client, _ := clients.CreateNamingClient(map[string]interface{}{
"serverConfigs": configs,
"clientConfig": constant.ClientConfig{
NamespaceId: "phsc",
TimeoutMs: 10 * 1000,
BeatInterval: 5 * 1000,
//CacheDir: "data/nacos/cache",
NotLoadCacheAtStart: true,
},
})
ip := getIpAddr()
RegisterServiceInstance(client, vo.RegisterInstanceParam{
Ip: ip,
Port: serverPort,
ServiceName: serverName,
Weight: 1,
GroupName: group,
Enable: true,
Healthy: true,
Ephemeral: true,
Metadata: map[string]string{
"preserved.heart.beat.interval": strconv.Itoa(1000 * 10), //25s
"preserved.register.source": "SPRING_CLOUD",
},
})
//连接
app = client
}
func getIpAddr() string {
address, _ := net.InterfaceAddrs()
for _, address := range address {
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
return ipnet.IP.String()
}
}
}
return "127.0.0.1"
}
func RegisterServiceInstance(client naming_client.INamingClient, param vo.RegisterInstanceParam) {
success, _ := client.RegisterInstance(param)
if success {
log.Printf("[INFO] 服务名 [%s] 注册成功 address [%s:%d] \n", param.ServiceName, param.Ip, param.Port)
} else {
log.Fatalf("[ERROR] 服务名 [%s] 注册失败 address [%s:%d] \n", param.ServiceName, param.Ip, param.Port)
}
go func() {
exitChan := make(chan os.Signal)
signal.Notify(exitChan, os.Interrupt, os.Kill, syscall.SIGTERM)
<-exitChan
log.Printf("[EXIT] 服务关闭 [%s] address [%s:%d] \n", param.ServiceName, param.Ip, param.Port)
_, _ = client.DeregisterInstance(vo.DeregisterInstanceParam{
Ip: param.Ip,
Port: param.Port,
Cluster: param.ClusterName,
ServiceName: param.ServiceName,
GroupName: param.GroupName,
Ephemeral: true, //立刻删除服务
})
os.Exit(1)
}()
}版权声明:本文为suqa1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。