From bd9dce43c18e180a4726f56168c8017c70c2e2ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Thu, 23 Jun 2022 15:12:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=BB=E5=8A=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3/=E9=85=8D=E7=BD=AE/=E5=A4=84=E7=90=86=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E7=9A=84=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abstract.go | 26 ++++++++++++++++++++++++++ define.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 abstract.go create mode 100644 define.go diff --git a/abstract.go b/abstract.go new file mode 100644 index 0000000..95aae7b --- /dev/null +++ b/abstract.go @@ -0,0 +1,26 @@ +// Package task ... +// +// Description : 定义任务接口约束 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 2022-06-23 14:20 +package task + +import "context" + +// ITask 任务接口约束 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 14:22 2022/6/23 +type ITask interface { + // Name 任务名称标识, 全局唯一 + Name() string + // Description 任务描述 + Description() string + // Callback 任务执行的回调 + Callback(result *Result) error + // Execute 执行任务 + Execute(ctx context.Context, cfg *Config, taskParam map[string]interface{}) (map[string]interface{}, error) +} diff --git a/define.go b/define.go new file mode 100644 index 0000000..10c9a78 --- /dev/null +++ b/define.go @@ -0,0 +1,38 @@ +// Package task ... +// +// Description : 定义任务配置 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 2022-06-23 14:26 +package task + +// Config 任务配置 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 14:26 2022/6/23 +type Config struct { + // GetRunID 获取任务运行的ID + GetRunID func() string + // Async 是否异步运行 + Async bool + // Timeout 单位 : 秒, <= 0认为不设置超时 + Timeout int + // ForbiddenCallback 禁用执行结果回调 + ForbiddenCallback bool +} + +// Result 执行结果 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 14:43 2022/6/23 +type Result struct { + StartTime int64 // 开始时间, 纳秒 + FinishTime int64 // 结束时间, 纳秒 + Used int64 // 耗时, 纳秒 + Param map[string]interface{} // 任务参数 + Data map[string]interface{} // 任务结果数据 + Err error // 异常信息, err == nil , 代表执行成功 +}