Documentation
¶
Index ¶
- Constants
- Variables
- type OrCondition
- type TaskCond
- type TaskDao
- func (dao *TaskDao) AvgCostTimeByCond(ctx context.Context, cond *TaskCond) (float64, error)
- func (dao *TaskDao) BatchInsert(ctx context.Context, entityList TaskList) error
- func (dao *TaskDao) BuildCondition(db *gorm.DB, cond *TaskCond)
- func (dao *TaskDao) CountByCond(ctx context.Context, cond *TaskCond) (int64, error)
- func (dao *TaskDao) Delete(ctx context.Context, id uint) error
- func (dao *TaskDao) GetByCond(ctx context.Context, cond *TaskCond) (*TaskEntity, error)
- func (dao *TaskDao) GetByID(ctx context.Context, id uint) (*TaskEntity, error)
- func (dao *TaskDao) GetListByCond(ctx context.Context, cond *TaskCond) (TaskList, error)
- func (dao *TaskDao) GetPageListByCond(ctx context.Context, cond *TaskCond) (TaskList, int64, error)
- func (dao *TaskDao) Insert(ctx context.Context, entity *TaskEntity) error
- func (dao *TaskDao) TableName() string
- func (dao *TaskDao) UpdateByID(ctx context.Context, id uint, entity *TaskEntity) error
- func (dao *TaskDao) UpdateMap(ctx context.Context, id uint, updateMap map[string]interface{}) error
- type TaskEntity
- func (t *TaskEntity) CanRetry() bool
- func (t *TaskEntity) GetAppGroup() string
- func (t *TaskEntity) GetID() uint
- func (t *TaskEntity) GetPayload() string
- func (t *TaskEntity) GetSubjectID() uint
- func (t *TaskEntity) GetTaskType() string
- func (t *TaskEntity) GetTimeout() time.Duration
- func (t *TaskEntity) IsFinished() bool
- func (t *TaskEntity) IsPending() bool
- func (t *TaskEntity) IsRunning() bool
- func (t *TaskEntity) IsSuccess() bool
- func (t *TaskEntity) MarkAsCanceled(reason string)
- func (t *TaskEntity) MarkAsFailed(errMsg string)
- func (t *TaskEntity) MarkAsRunning(workerID string)
- func (t *TaskEntity) MarkAsSuccess(result string)
- func (t *TaskEntity) MarkAsTimeout()
- func (TaskEntity) TableName() string
- func (t *TaskEntity) Validate() error
- type TaskList
- type TaskStatus
Constants ¶
View Source
const TableNameCoreTask = "core_task"
Variables ¶
View Source
var ( // ErrInvalidMode 无效的任务模式 ErrInvalidMode = errors.New("task: invalid mode") // ErrEmptyWorkerID Worker ID 不能为空 ErrEmptyWorkerID = errors.New("task: worker id cannot be empty in distributed mode") // ErrInvalidTimeout 无效的超时时间 ErrInvalidTimeout = errors.New("task: invalid timeout") // ErrInvalidMaxRedo 无效的重试次数 ErrInvalidMaxRedo = errors.New("task: invalid max redo") // ErrInvalidMaxConcurrency 无效的并发数 ErrInvalidMaxConcurrency = errors.New("task: invalid max concurrency") // ErrExecutorNotFound 执行器未找到 ErrExecutorNotFound = errors.New("task: executor not found") // ErrTaskNotFound 任务未找到 ErrTaskNotFound = errors.New("task: task not found") // ErrManagerNotStarted 管理器未启动 ErrManagerNotStarted = errors.New("task: manager not started") // ErrManagerAlreadyStarted 管理器已启动 ErrManagerAlreadyStarted = errors.New("task: manager already started") // ErrFailedToGetLock 获取锁失败 ErrFailedToGetLock = errors.New("task: failed to get lock") // ErrEmptyTaskType 任务类型不能为空 ErrEmptyTaskType = errors.New("task: task type cannot be empty") // ErrEmptyPayload 任务载荷不能为空 ErrEmptyPayload = errors.New("task: payload cannot be empty") // ErrInvalidSubjectID 无效的主体 ID ErrInvalidSubjectID = errors.New("task: invalid subject id") )
Functions ¶
This section is empty.
Types ¶
type OrCondition ¶
type TaskDao ¶
type TaskDao struct {
// contains filtered or unexported fields
}
func NewTaskDao ¶
func (*TaskDao) AvgCostTimeByCond ¶
平均耗时统计(秒)
func (*TaskDao) BatchInsert ¶
func (*TaskDao) CountByCond ¶
func (*TaskDao) GetListByCond ¶
func (*TaskDao) GetPageListByCond ¶
func (*TaskDao) UpdateByID ¶
type TaskEntity ¶
type TaskEntity struct {
gorm.Model
// CompanyID 公司 ID,用于多租户隔离
CompanyID uint `gorm:"type:bigint;not null;index:idx_company_id;default:0" json:"company_id" comment:"公司ID"`
// Uin 用户 ID,用于标识任务归属用户
Uin uint `gorm:"type:bigint;not null;index:idx_uin;default:0" json:"uin" comment:"用户ID"`
// SubjectType 主体类型,标识任务关联的业务对象类型(如:order, document, user 等)
SubjectType string `gorm:"type:varchar(64);not null;index:idx_subject_type" json:"subject_type" comment:"主体类型"`
// SubjectID 主体 ID,标识任务关联的业务对象 ID
SubjectID uint `gorm:"type:bigint;not null;index:idx_subject_id" json:"subject_id" comment:"主体ID"`
// TaskType 任务类型,用于匹配任务执行器
TaskType string `gorm:"type:varchar(64);not null;index:idx_task_type" json:"task_type" comment:"任务类型"`
// TaskStatus 任务状态:pending(待执行)、running(执行中)、success(成功)、failed(失败)、canceled(已取消)、timeout(超时)
TaskStatus TaskStatus `gorm:"type:varchar(20);not null;index:idx_task_status" json:"task_status" comment:"任务状态"`
// Priority 任务优先级,数值越大优先级越高
Priority int `gorm:"type:int;not null;default:0;index:idx_priority" json:"priority" comment:"任务优先级"`
// Step 任务步骤序号,用于步骤化任务执行,前序步骤未完成时后续步骤不会执行
Step int `gorm:"type:int;not null;default:0" json:"step" comment:"任务步骤序号"`
// Redo 当前重试次数,每次重试后加 1
Redo int `gorm:"type:int;not null;default:0" json:"redo" comment:"当前重试次数"`
// MaxRedo 最大重试次数,当 Redo >= MaxRedo 时不再重试
MaxRedo int `gorm:"type:int;not null;default:3" json:"max_redo" comment:"最大重试次数"`
// Timeout 任务执行超时时间(单位:纳秒),存储为 int64
Timeout time.Duration `gorm:"type:bigint;not null" json:"timeout" comment:"任务超时时间"`
// Payload 任务参数,通常为 JSON 格式的业务数据
Payload string `gorm:"type:longtext" json:"payload" comment:"任务参数"`
// Result 任务执行结果,通常为 JSON 格式的返回数据
Result string `gorm:"type:text" json:"result" comment:"任务执行结果"`
// ErrMsg 错误信息,任务失败、超时、取消时记录原因
ErrMsg string `gorm:"type:text" json:"err_msg" comment:"错误信息"`
// WorkerID Worker 标识,分布式模式下标识处理该任务的 Worker
WorkerID string `gorm:"type:varchar(64)" json:"worker_id" comment:"Worker标识"`
// StartAt 任务开始执行时间
StartAt *time.Time `gorm:"type:datetime" json:"start_at" comment:"开始执行时间"`
// EndAt 任务结束时间(成功、失败、超时、取消)
EndAt *time.Time `gorm:"type:datetime" json:"end_at" comment:"结束时间"`
// Cost 任务执行耗时(单位:秒)
Cost int64 `gorm:"type:bigint;default:0" json:"cost" comment:"任务执行耗时(秒)"`
// AppGroup 应用分组,用于将同一业务流程的多个步骤任务组织在一起,支持同一 SubjectID 下多个流程并行
AppGroup string `gorm:"type:varchar(32);index:idx_app_group" json:"app_group" comment:"应用分组"`
}
TaskEntity 任务模型
func (*TaskEntity) IsFinished ¶
func (t *TaskEntity) IsFinished() bool
IsFinished 是否已完成(成功、失败、取消、超时)
func (*TaskEntity) MarkAsCanceled ¶
func (t *TaskEntity) MarkAsCanceled(reason string)
MarkAsCanceled 标记为取消
func (*TaskEntity) MarkAsFailed ¶
func (t *TaskEntity) MarkAsFailed(errMsg string)
MarkAsFailed 标记为失败
func (*TaskEntity) MarkAsRunning ¶
func (t *TaskEntity) MarkAsRunning(workerID string)
MarkAsRunning 标记为运行中
func (*TaskEntity) MarkAsSuccess ¶
func (t *TaskEntity) MarkAsSuccess(result string)
MarkAsSuccess 标记为成功
type TaskList ¶
type TaskList []TaskEntity
type TaskStatus ¶
type TaskStatus string
TaskStatus 任务状态
const ( // TaskStatusPending 等待执行 TaskStatusPending TaskStatus = "pending" // TaskStatusRunning 执行中 TaskStatusRunning TaskStatus = "running" // TaskStatusSuccess 执行成功 TaskStatusSuccess TaskStatus = "success" // TaskStatusFailed 执行失败 TaskStatusFailed TaskStatus = "failed" // TaskStatusCanceled 已取消 TaskStatusCanceled TaskStatus = "canceled" // TaskStatusTimeout 超时 TaskStatusTimeout TaskStatus = "timeout" )
Click to show internal directories.
Click to hide internal directories.