增加任务调度, 任务执行待完成
This commit is contained in:
parent
bd9dce43c1
commit
eb9cb4b6e2
@ -22,5 +22,5 @@ type ITask interface {
|
|||||||
// Callback 任务执行的回调
|
// Callback 任务执行的回调
|
||||||
Callback(result *Result) error
|
Callback(result *Result) error
|
||||||
// Execute 执行任务
|
// Execute 执行任务
|
||||||
Execute(ctx context.Context, cfg *Config, taskParam map[string]interface{}) (map[string]interface{}, error)
|
Execute(ctx context.Context, cfg *Config) (map[string]interface{}, error)
|
||||||
}
|
}
|
||||||
|
20
define.go
20
define.go
@ -13,6 +13,8 @@ package task
|
|||||||
//
|
//
|
||||||
// Date : 14:26 2022/6/23
|
// Date : 14:26 2022/6/23
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
// TaskName 执行的任务名称
|
||||||
|
TaskName string
|
||||||
// GetRunID 获取任务运行的ID
|
// GetRunID 获取任务运行的ID
|
||||||
GetRunID func() string
|
GetRunID func() string
|
||||||
// Async 是否异步运行
|
// Async 是否异步运行
|
||||||
@ -21,6 +23,8 @@ type Config struct {
|
|||||||
Timeout int
|
Timeout int
|
||||||
// ForbiddenCallback 禁用执行结果回调
|
// ForbiddenCallback 禁用执行结果回调
|
||||||
ForbiddenCallback bool
|
ForbiddenCallback bool
|
||||||
|
// Param 任务执行参数
|
||||||
|
Param map[string]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Result 执行结果
|
// Result 执行结果
|
||||||
@ -29,10 +33,14 @@ type Config struct {
|
|||||||
//
|
//
|
||||||
// Date : 14:43 2022/6/23
|
// Date : 14:43 2022/6/23
|
||||||
type Result struct {
|
type Result struct {
|
||||||
StartTime int64 // 开始时间, 纳秒
|
StartTime int64 // 开始时间, 纳秒
|
||||||
FinishTime int64 // 结束时间, 纳秒
|
FinishTime int64 // 结束时间, 纳秒
|
||||||
Used int64 // 耗时, 纳秒
|
Used int64 // 耗时, 纳秒
|
||||||
Param map[string]interface{} // 任务参数
|
TaskRunID string // 任务运行ID
|
||||||
Data map[string]interface{} // 任务结果数据
|
TaskDescription string // 任务描述
|
||||||
Err error // 异常信息, err == nil , 代表执行成功
|
TaskConfig *Config // 任务配置
|
||||||
|
Async bool // 是否异步
|
||||||
|
Param map[string]interface{} // 任务参数
|
||||||
|
Data map[string]interface{} // 任务结果数据
|
||||||
|
Err error // 异常信息, err == nil , 代表执行成功
|
||||||
}
|
}
|
||||||
|
77
task.go
Normal file
77
task.go
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
// Package task ...
|
||||||
|
//
|
||||||
|
// Description : task ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 2022-06-23 15:13
|
||||||
|
package task
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// Dispatch 调度实例
|
||||||
|
Dispatch *dispatch
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Dispatch = &dispatch{
|
||||||
|
lock: &sync.RWMutex{},
|
||||||
|
taskTable: make(map[string]ITask),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// dispatch 任务调度
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:14 2022/6/23
|
||||||
|
type dispatch struct {
|
||||||
|
// 锁
|
||||||
|
lock *sync.RWMutex
|
||||||
|
// 任务表
|
||||||
|
taskTable map[string]ITask
|
||||||
|
}
|
||||||
|
|
||||||
|
// Register 注册任务
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:16 2022/6/23
|
||||||
|
func (d *dispatch) Register(taskInstanceList ...ITask) error {
|
||||||
|
d.lock.Lock()
|
||||||
|
defer d.lock.Unlock()
|
||||||
|
for _, taskInstance := range taskInstanceList {
|
||||||
|
if nil == taskInstance {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
d.taskTable[taskInstance.Name()] = taskInstance
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove 移除任务
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:16 2022/6/23
|
||||||
|
func (d *dispatch) Remove(taskNameList ...string) error {
|
||||||
|
d.lock.Lock()
|
||||||
|
defer d.lock.Unlock()
|
||||||
|
for _, taskName := range taskNameList {
|
||||||
|
delete(d.taskTable, taskName)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run 执行任务
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:18 2022/6/23
|
||||||
|
func (d *dispatch) Run(ctx context.Context, cfg *Config, taskParam map[string]interface{}) (map[string]interface{}, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user