Files
core/infra/service.go
yanweidong 25386cf0e1 ```
refactor(print): 将 print 包重命名为 printer 并更新所有引用

将项目中的 print 包统一重命名为 printer,以避免与标准库或第三方库产生命名冲突。同时,
更新了所有相关模块对该包的引用,确保功能一致性和代码可维护性。

涉及文件包括:
- conf/new.go
- infra/service.go
- service/register.go
- service/service.go
- with/databases.go
- with/etcd.go
- with/memory.go
- with/redis.go

此外,删除了以下已废弃或未使用的代码文件:
- cmd/cmd.go
- data/map_float.go
- data/map_string.go
- oplog/new.go
- oplog/types.go
- print/print.go
- utils/ext.go
```
2025-09-27 00:20:36 +08:00

55 lines
1.1 KiB
Go

package infra
import (
"context"
"log"
"time"
"git.apinb.com/bsm-sdk/core/printer"
"git.apinb.com/bsm-sdk/core/utils"
clientv3 "go.etcd.io/etcd/client/v3"
)
var (
Service service
RootPrefix string = "/bsm_services/"
)
type service struct{}
func (s *service) Register(cli *clientv3.Client, serviceName string, port string) error {
lease := clientv3.NewLease(cli)
grantResp, err := lease.Grant(context.TODO(), 5)
if err != nil {
return err
}
serviceAddr := utils.GetLocationIP() + ":" + 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
}
printer.Info("[BSM Register] Service Key: %s", key)
printer.Info("[BSM Register] Service Val: %s", serviceAddr)
printer.Success("[BSM Register] Service Register Complete.")
go func() {
for keepAliveResp := range keepAliveChan {
if keepAliveResp == nil {
log.Println("LeaseKeepAlive", "Failed")
return
}
}
}()
return nil
}