Go如何配置gRPC的健康检查
来源:26-5 配置grpc的健康检查

hdjs
2021-04-07
Go如何配置gRPC的健康检查
写回答
1回答
-
package consul import ( "fmt" "github.com/hashicorp/consul/api" ) type Registry struct{ Host string Port int } type RegistryClient interface { Register(address string, port int, name string, tags []string, id string) error DeRegister(serviceId string) error } func NewRegistryClient(host string, port int) RegistryClient{ return &Registry{ Host: host, Port: port, } } func (r *Registry)Register(address string, port int, name string, tags []string, id string) error { cfg := api.DefaultConfig() cfg.Address = fmt.Sprintf("%s:%d", r.Host, r.Port) client, err := api.NewClient(cfg) if err != nil { panic(err) } //生成对应grpc的检查对象 check := &api.AgentServiceCheck{ GRPC: fmt.Sprintf("%s:%d", address, port), Timeout: "5s", Interval: "5s", DeregisterCriticalServiceAfter: "15s", } //生成注册对象 registration := new(api.AgentServiceRegistration) registration.Name = name registration.ID = id registration.Port = port registration.Tags = tags registration.Address = address registration.Check = check err = client.Agent().ServiceRegister(registration) if err != nil { panic(err) } return nil } func (r *Registry)DeRegister(serviceId string) error{ cfg := api.DefaultConfig() cfg.Address = fmt.Sprintf("%s:%d", r.Host, r.Port) client, err := api.NewClient(cfg) if err != nil { return err } err = client.Agent().ServiceDeregister(serviceId) return err }
这是我写的专门用于注册到consul中的共用代码
用法:
register_client := consul.NewRegistryClient(global.ServerConfig.ConsulInfo.Host, global.ServerConfig.ConsulInfo.Port) serviceId := fmt.Sprintf("%s", uuid.NewV4()) err = register_client.Register(global.ServerConfig.Host, *Port, global.ServerConfig.Name, global.ServerConfig.Tags, serviceId)
00
相似问题