errcode
This commit is contained in:
54
infra/service.go
Normal file
54
infra/service.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package infra
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/print"
|
||||
"git.apinb.com/bsm-sdk/core/utils"
|
||||
clientv3 "go.etcd.io/etcd/client/v3"
|
||||
)
|
||||
|
||||
var (
|
||||
Service service
|
||||
RootPrefix string = "/services/"
|
||||
)
|
||||
|
||||
type service struct{}
|
||||
|
||||
func (s *service) Register(cli *clientv3.Client, serviceName string, port int) error {
|
||||
lease := clientv3.NewLease(cli)
|
||||
grantResp, err := lease.Grant(context.TODO(), 5)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
serviceAddr := utils.GetLocationIP() + ":" + utils.Int2String(port)
|
||||
|
||||
key := RootPrefix + serviceName + "/" + utils.Int642String(time.Now().UnixNano())
|
||||
_, err = cli.KV.Put(context.TODO(), key, serviceAddr, clientv3.WithLease(grantResp.ID))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
keepAliveChan, err := lease.KeepAlive(context.TODO(), grantResp.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
print.Info("[Traingo Register] Service Key: %s", key)
|
||||
print.Info("[Traingo Register] Service Val: %s", serviceAddr)
|
||||
|
||||
print.Success("[Traingo Register] Service Register Complete.")
|
||||
|
||||
go func() {
|
||||
for keepAliveResp := range keepAliveChan {
|
||||
if keepAliveResp == nil {
|
||||
log.Println("LeaseKeepAlive", "Failed")
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user