35 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package task
 | |
| 
 | |
| import (
 | |
| 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
 | |
| 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
 | |
| )
 | |
| 
 | |
| // Task 定义了所有可被调度器执行的任务必须实现的接口。
 | |
| type Task interface {
 | |
| 	// Execute 是任务的核心执行逻辑。
 | |
| 	// ctx: 用于控制任务的超时或取消。
 | |
| 	// log: 包含了当前任务执行的完整上下文信息,包括从数据库中加载的任务参数等。
 | |
| 	// 返回的 error 表示任务是否执行成功。调度器会根据返回的 error 是否为 nil 来决定任务状态。
 | |
| 	Execute() error
 | |
| 
 | |
| 	// ParseParams 解析及校验参数
 | |
| 	ParseParams(logger *logs.Logger, claimedLog *models.TaskExecutionLog) error
 | |
| 
 | |
| 	// OnFailure 定义了当 Execute 方法返回错误时,需要执行的回滚或清理逻辑。
 | |
| 	// log: 任务执行的上下文。
 | |
| 	// executeErr: 从 Execute 方法返回的原始错误。
 | |
| 	OnFailure(executeErr error)
 | |
| }
 | |
| 
 | |
| // TaskFactory 是一个任务组装工厂, 可以根据Task类型获取到对应的初始化函数
 | |
| var TaskFactory = func(tt models.TaskType) Task {
 | |
| 	switch tt {
 | |
| 	case models.TaskTypeWaiting:
 | |
| 		return &DelayTask{}
 | |
| 	default:
 | |
| 		// 出现位置任务类型说明业务逻辑出现重大问题, 一个异常任务被创建了出来
 | |
| 		panic("发现未知任务类型")
 | |
| 	}
 | |
| }
 |