1 Star 0 Fork 0

xiedongji / antgo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
etcd.go 1.35 KB
一键复制 编辑 原始数据 按行查看 历史
xiedongji 提交于 2023-03-17 21:17 . 独立成框架
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
}
Go
1
https://gitee.com/xiedongji/antgo.git
git@gitee.com:xiedongji/antgo.git
xiedongji
antgo
antgo
v1.0.18

搜索帮助