代码拉取完成,页面将自动刷新
package xrpc
import (
"context"
"fmt"
"gitee.com/xiedongji/antgo/cpts/xlog"
clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/client/v3/naming/endpoints"
)
var etcdClient *clientv3.Client
func EtcdRegister(etcdHost, serviceName, addr string, ttl int64) error {
etcdClient, err := clientv3.NewFromURL(etcdHost)
if err != nil {
return err
}
em, err := endpoints.NewManager(etcdClient, serviceName)
if err != nil {
return err
}
lease, _ := etcdClient.Grant(context.TODO(), ttl)
err = em.AddEndpoint(context.TODO(), fmt.Sprintf("%s/%s", serviceName, addr), endpoints.Endpoint{Addr: addr}, clientv3.WithLease(lease.ID))
if err != nil {
return err
}
// 暂未分析。。。
//core.DeferAdd(func() {
// EtcdUnRegister(serviceName, addr)
//})
alive, err := etcdClient.KeepAlive(context.TODO(), lease.ID)
if err != nil {
return err
}
go func() {
for {
<-alive
xlog.Logger("grpc", "etcd").Debug().Msg("Keep Alive")
}
}()
return nil
}
func EtcdUnRegister(serviceName, addr string) error {
xlog.Logger("grpc", "etcd").Debug().Str("addr", addr).Msg("unregister")
if etcdClient != nil {
em, err := endpoints.NewManager(etcdClient, serviceName)
if err != nil {
return err
}
err = em.DeleteEndpoint(context.TODO(), fmt.Sprintf("%s/%s", serviceName, addr))
if err != nil {
return err
}
return err
}
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。