diff --git a/myregistry/consul/consul.go b/myregistry/consul/consul.go index b814b24..0171b67 100644 --- a/myregistry/consul/consul.go +++ b/myregistry/consul/consul.go @@ -63,14 +63,19 @@ func (c *Consul) Register(service *myregistry.ServiceInfo) error { return fmt.Errorf("service [%s] already registered", service.ServiceName) } + checkTime := time.Second * 15 + + fmt.Println(checkTime.String()) + check := &api.AgentServiceCheck{ - CheckID: serviceId, - TCP: fmt.Sprintf("%s:%d", service.Ip, service.Port), - Timeout: "5s", // 超时时间 - Interval: "30s", // 运行检查的频率 + CheckID: serviceId, + TTL: (checkTime*2 + time.Second*5).String(), + //TCP: fmt.Sprintf("%s:%d", service.Ip, service.Port), + //Timeout: "5s", // 超时时间 + //Interval: "30s", // 运行检查的频率 // 指定时间后自动注销不健康的服务节点 // 最小超时时间为1分钟,收获不健康服务的进程每30秒运行一次,因此触发注销的时间可能略长于配置的超时时间。 - DeregisterCriticalServiceAfter: "6m", + DeregisterCriticalServiceAfter: "5m", Status: api.HealthPassing, } @@ -100,6 +105,21 @@ func (c *Consul) Register(service *myregistry.ServiceInfo) error { defaultLog.Infof("register service ok: %s - %s:%d", svc.Name, svc.Address, svc.Port) + go func() { + for { + //defaultLog.Debugf("PassTTL ttl service: %s", svc.Name) + + err := c.client.Agent().PassTTL(serviceId, "") + if err != nil { + defaultLog.Errorf("PassTTL service err: %s: %s", svc.Name, err) + } + + time.Sleep(checkTime) + + } + + }() + return nil } @@ -146,7 +166,7 @@ func New(conf *myconf.Config, opts ...Opt) (*Consul, error) { opt(cl) } - go cl.healthCheck() + go cl.allHealthCheck() return cl, nil } @@ -208,9 +228,9 @@ func NewClient(clientCfg *ClientConfig) (*api.Client, error) { return client, nil } -func (c *Consul) healthCheck() { +func (c *Consul) allHealthCheck() { time.Sleep(time.Second * 5) - mylog.Infof("start health check") + mylog.Infof("start all health check") var ( lastIndex uint64