序
本文次要钻研一下 xxl-job-executor-go 的 Task
Task
// 工作
type Task struct {
Id int64
Name string
Ext context.Context
Param *RunReq
fn TaskFunc
Cancel context.CancelFunc
StartTime int64
EndTime int64
// 日志
log Logger
}
type TaskFunc func(cxt context.Context, param *RunReq) string
Task 定义了 Id、Name、Ext、Param、fn、Cancel、StartTime、EndTime、log 属性
Run
func (t *Task) Run(callback func(code int64, msg string)) {defer func(cancel func()) {if err := recover(); err != nil {t.log.Info(t.Info()+"panic: %v", err)
debug.PrintStack() // 堆栈跟踪
callback(500, "task panic:"+fmt.Sprintf("%v", err))
cancel()}
}(t.Cancel)
msg := t.fn(t.Ext, t.Param)
callback(200, msg)
return
}
Run 办法注册了 defer 在 panic 的时候执行 callback 和 cancel,而后执行 t.fn(t.Ext, t.Param)以及 callback(200, msg)
Info
func (t *Task) Info() string {return "工作 ID[" + Int64ToStr(t.Id) + "]工作名称 [" + t.Name + "] 参数:" + t.Param.ExecutorParams
}
Info 办法返回了工作 ID、工作名称、参数信息
小结
xxl-job-executor-go 的 Task 定义了 Id、Name、Ext、Param、fn、Cancel、StartTime、EndTime、log 属性;它提供了 Run、Info 办法。
doc
- xxl-job-executor-go