xxl-job / xxl-job-executor-go

xxl-job 执行器(golang 客户端)
MIT License
424 stars 104 forks source link

注册执行器不需要轮询调用,HTTP1.1默认支持keepalive #61

Open s5364733 opened 1 year ago

s5364733 commented 1 year ago

很明显进行第一次尝试keepalive TCPack 之后 服务端会主动发送FIN SYN 包主动断开连接,

总结,虽然不确定为什么服务端会主动发送FIN 包 但是可以确定的是,轮询防止心跳过期代码并没有起到什么作用

代码如下:

func (e *executor) registry() {

    t := time.NewTimer(time.Second * 0) //初始立即执行
    defer t.Stop()
    req := &Registry{
        RegistryGroup: "EXECUTOR",
        RegistryKey:   e.opts.RegistryKey,
        RegistryValue: "http://" + e.address,
    }
    param, err := json.Marshal(req)
    if err != nil {
        log.Fatal("执行器注册信息解析失败:" + err.Error())
    }
    for {
        <-t.C
        t.Reset(time.Second * time.Duration(20)) //20秒心跳防止过期
        func() {
            result, err := e.post("/api/registry", string(param))
            if err != nil {
                e.log.Error("执行器注册失败1:" + err.Error())
                return
            }
            defer result.Body.Close()
            body, err := ioutil.ReadAll(result.Body)
            if err != nil {
                e.log.Error("执行器注册失败2:" + err.Error())
                return
            }
            res := &res{}
            _ = json.Unmarshal(body, &res)
            if res.Code != SuccessCode {
                e.log.Error("执行器注册失败3:" + string(body))
                return
            }
            e.log.Info("执行器注册成功:" + string(body))
        }()

    }
}
tiantianlikeu commented 1 year ago

这个会处理吗?控制台一直打执行器注册成功的日志