更新consul使用tag

This commit is contained in:
suguo.yao 2021-10-07 14:27:03 +08:00
parent 6c14e82c92
commit a7f76f00a9
1 changed files with 4 additions and 37 deletions

View File

@ -84,39 +84,6 @@ func RegisterAPI(name string, addr string, port int, tags ...string) error {
return nil
}
//Register 注册服务到consul
func Register(name string, addr string, port int, tags ...string) error {
client, err := New()
if err != nil {
return err
}
if client == nil {
return errors.New("consul 实例空")
}
// 创建注册到consul的服务到
registration := new(consulapi.AgentServiceRegistration)
registration.ID = fmt.Sprintf("%s-%s:%d", name, addr, port)
registration.Name = name
registration.Port = port
registration.Tags = tags
registration.Address = addr
// 增加consul健康检查回调函数
check := new(consulapi.AgentServiceCheck)
check.GRPC = fmt.Sprintf("%s:%d", registration.Address, registration.Port)
check.Timeout = "5s"
check.Interval = "5s"
check.DeregisterCriticalServiceAfter = "30s" // 故障检查失败30s后 consul自动将注册服务删除
registration.Check = check
// 注册服务到consul
if err := client.Agent().ServiceRegister(registration); err != nil {
return err
}
return nil
}
//DeRegister 取消consul注册的服务
func DeRegister(name string, addr string, port int) error {
client, err := New()
@ -131,7 +98,7 @@ func DeRegister(name string, addr string, port int) error {
}
//FindNode 查找节点
func FindNode(servicename string) (*consulapi.AgentService, error) {
func FindNode(servicename, tag string) (*consulapi.AgentService, error) {
client, err := New()
if err != nil {
return nil, err
@ -140,7 +107,7 @@ func FindNode(servicename string) (*consulapi.AgentService, error) {
if client == nil {
return nil, errors.New("consul 实例空")
}
services, _, err := client.Health().Service(servicename, "", true, nil)
services, _, err := client.Health().Service(servicename, tag, true, nil)
if err != nil {
return nil, err
}
@ -156,9 +123,9 @@ func FindNode(servicename string) (*consulapi.AgentService, error) {
return services[r.Intn(l)%l].Service, nil
}
//FindServer 从consul中发现服务
//FindServer 从consul中发现服务并返回grpc连接实例
func FindServer(servicename string) (*grpc.ClientConn, error) {
node, err := FindNode(servicename)
node, err := FindNode(servicename, "") //无tag视为grpc服务
if err != nil {
return nil, err
}