Documentation
¶
Index ¶
- Variables
- func EveryDay(key string, days int, handler TaskHandler, ops ...TaskOption) error
- func EveryHour(key string, hours int, handler TaskHandler, ops ...TaskOption) error
- func EveryInterval(key string, interval time.Duration, handler TaskHandler, ops ...TaskOption) error
- func EveryMinute(key string, minutes int, handler TaskHandler, ops ...TaskOption) error
- func EveryMonthDay(key string, day int, handler TaskHandler, ops ...TaskOption) error
- func EveryMonthFirstDay(key string, handler TaskHandler, ops ...TaskOption) error
- func EveryMonthLastDay(key string, handler TaskHandler, ops ...TaskOption) error
- func EverySecond(key string, seconds int, handler TaskHandler, ops ...TaskOption) error
- func EveryWeekDay(key string, weekDay int, handler TaskHandler, ops ...TaskOption) error
- func GetLogger() *slog.Logger
- func IsRuning() bool
- func OnceAfter(key string, delay time.Duration, handler TaskHandler, ops ...TaskOption) error
- func OnceAt(key string, executeAt time.Time, handler TaskHandler, ops ...TaskOption) error
- func OnceBuffer(key string, delay time.Duration, handler TaskHandler, ops ...TaskOption) error
- func RemoveAllTasks() error
- func RemoveTask(keys ...string) error
- func Restart()
- func SetGlobal(tm *TaskManager)
- func SetLogger(log *slog.Logger)
- func Size() int
- func Stop()
- func TaskStateString(s TaskState) string
- type Options
- type Task
- type TaskHandler
- type TaskInfo
- type TaskManager
- func (ts *TaskManager) EveryDay(key string, days int, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) EveryHour(key string, hours int, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) EveryInterval(key string, interval time.Duration, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) EveryMinute(key string, minutes int, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) EveryMonthDay(key string, day int, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) EveryMonthFirstDay(key string, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) EveryMonthLastDay(key string, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) EverySecond(key string, seconds int, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) EveryWeekDay(key string, weekDay int, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) GetAllTasks() []TaskInfo
- func (ts *TaskManager) GetTask(key string) (TaskInfo, error)
- func (ts *TaskManager) IsRuning() bool
- func (ts *TaskManager) Monitor() TaskMonitorData
- func (ts *TaskManager) OnceAfter(key string, delay time.Duration, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) OnceAt(key string, executeAt time.Time, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) OnceBuffer(key string, delay time.Duration, handler TaskHandler, ops ...TaskOption) error
- func (ts *TaskManager) RemoveAllTasks() error
- func (ts *TaskManager) RemoveTask(keys ...string) error
- func (ts *TaskManager) Restart()
- func (ts *TaskManager) Size() int
- func (ts *TaskManager) Stop()
- type TaskMonitorData
- type TaskOption
- type TaskState
Constants ¶
This section is empty.
Variables ¶
var ( // Task 数据指针为空 ErrTaskIsNil = errors.New("task is nil") // Task Key 不能为空 ErrTaskKeyEmpty = errors.New("task key is empty") // Task Key 不存在 ErrTaskKeyNotExist = errors.New("task key not exist") // Task Handler 不能为空 ErrTaskHandlerNil = errors.New("task handler is nil") // Task 执行时间无效 ErrTaskExecuteAt = errors.New("task execute time is invalid") // Task 执行周期无效 ErrTaskInterval = errors.New("task interval is invalid") // Task 已取消 ErrTaskCancelled = errors.New("task is cancelled") // Task 已关闭 ErrTaskClosed = errors.New("task is closed") )
Functions ¶
func EveryDay ¶
func EveryDay(key string, days int, handler TaskHandler, ops ...TaskOption) error
EveryDay 创建周期性任务(每几天运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func EveryHour ¶
func EveryHour(key string, hours int, handler TaskHandler, ops ...TaskOption) error
EveryHour 创建周期性任务(每几小时运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func EveryInterval ¶
func EveryInterval(key string, interval time.Duration, handler TaskHandler, ops ...TaskOption) error
EveryInterval 创建周期性任务,基于一个明确的间隔时间 interval
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func EveryMinute ¶
func EveryMinute(key string, minutes int, handler TaskHandler, ops ...TaskOption) error
EveryMinute 创建周期性任务(每几分钟运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func EveryMonthDay ¶
func EveryMonthDay(key string, day int, handler TaskHandler, ops ...TaskOption) error
EveryMonthDay 创建周期性任务(每月的某一日运行一次)
- day: 1-31, 如指定31号,但当月只有30天,则30日执行
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func EveryMonthFirstDay ¶
func EveryMonthFirstDay(key string, handler TaskHandler, ops ...TaskOption) error
EveryMonthFirstDay 创建周期性任务(每月第1天运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func EveryMonthLastDay ¶
func EveryMonthLastDay(key string, handler TaskHandler, ops ...TaskOption) error
EveryMonthLastDay 创建周期性任务(每月最后一天运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func EverySecond ¶
func EverySecond(key string, seconds int, handler TaskHandler, ops ...TaskOption) error
EverySecond 创建周期性任务(每几秒钟运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻: WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func EveryWeekDay ¶
func EveryWeekDay(key string, weekDay int, handler TaskHandler, ops ...TaskOption) error
EveryWeekDay 创建周期性任务(每周X运行一次)
- weekDay 0-7, 0/7 => 星期日
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func OnceAfter ¶
func OnceAfter(key string, delay time.Duration, handler TaskHandler, ops ...TaskOption) error
OnceAfter 创建一次性延迟任务(基于一个延迟时间)
- ops 可通过 TaskOption 指定任务运行的开始时间: WithStartAt 超时时间: WithTimeout 等
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func OnceAt ¶
func OnceAt(key string, executeAt time.Time, handler TaskHandler, ops ...TaskOption) error
OnceAt 创建一次性定时任务(基于一个明确时间)
- executeAt 调度器内部会统一转换为本地时区后处理,如已过期则调整为当前时间(立即执行)
- ops 可通过 TaskOption 指定任务运行的超时时间: WithTimeout
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func OnceBuffer ¶
func OnceBuffer(key string, delay time.Duration, handler TaskHandler, ops ...TaskOption) error
OnceBuffer 创建一次性延迟任务(缓冲模式), 常用于延迟更新任务, 如缓存更新等场景
- ops 可通过 TaskOption 指定任务运行的开始时间: WithStartAt 超时时间: WithTimeout 等
- 注意:任务添加后/执行前相同Key任务的添加操作将会忽略
func TaskStateString ¶
Types ¶
type TaskInfo ¶
type TaskInfo struct {
Key string
IsOnce bool // 是否为一次性任务
IsBuffer bool // 是否为一次性任务(缓冲模式),任务首次添加后/运行前将会忽略相同Key任务的添加操作
RunMax int32 // 任务最多运行次数(周期任务有效)
RunCount int32 // 任务已运行次数
Timeout time.Duration // 任务执行超时时间(未定义时默认为60秒)
LastState TaskState // 任务最近一次状态结果状态
LastRunAt time.Time // 任务最近一次运行时间
LastConsuming time.Duration // 任务最近一次运行耗时
LastError error // 任务最近一次运行错误
}
TaskInfo 定时任务基本信息(含运行状态信息)
type TaskManager ¶
type TaskManager struct {
// contains filtered or unexported fields
}
TaskManager 定时任务管理器
func NewTaskManager ¶
func NewTaskManager(name string, options *Options) *TaskManager
NewTaskManager 创建一个新的定时任务管理器
- name string 管理器名称
- options *Options 配置选项
- type Options struct {
- ShardCount int // 任务队列存储分片数量, 默认 32, 最小 1, 最大 512
- WorkerCount int // 任务处理协程数量, 默认 2048, 最小 1, 最大 262144
- CheckPeriod time.Duration // 任务队列检查最小时间,决定了定时任务定时/间隔精度, 默认 10 毫秒, 最小 1毫秒, 最大 1000毫秒(1秒)
- }
func (*TaskManager) EveryDay ¶
func (ts *TaskManager) EveryDay(key string, days int, handler TaskHandler, ops ...TaskOption) error
EveryDay 创建周期性任务(每几天运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) EveryHour ¶
func (ts *TaskManager) EveryHour(key string, hours int, handler TaskHandler, ops ...TaskOption) error
EveryHour 创建周期性任务(每几小时运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) EveryInterval ¶
func (ts *TaskManager) EveryInterval(key string, interval time.Duration, handler TaskHandler, ops ...TaskOption) error
EveryInterval 创建周期性任务,基于一个明确的间隔时间 interval
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) EveryMinute ¶
func (ts *TaskManager) EveryMinute(key string, minutes int, handler TaskHandler, ops ...TaskOption) error
EveryMinute 创建周期性任务(每几分钟运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) EveryMonthDay ¶
func (ts *TaskManager) EveryMonthDay(key string, day int, handler TaskHandler, ops ...TaskOption) error
EveryMonthDay 创建周期性任务(每月的某一日运行一次)
- day: 1-31, 如指定31号,但当月只有30天,则30日执行
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) EveryMonthFirstDay ¶
func (ts *TaskManager) EveryMonthFirstDay(key string, handler TaskHandler, ops ...TaskOption) error
EveryMonthFirstDay 创建周期性任务(每月第1天运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) EveryMonthLastDay ¶
func (ts *TaskManager) EveryMonthLastDay(key string, handler TaskHandler, ops ...TaskOption) error
EveryMonthLastDay 创建周期性任务(每月最后一天运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) EverySecond ¶
func (ts *TaskManager) EverySecond(key string, seconds int, handler TaskHandler, ops ...TaskOption) error
EverySecond 创建周期性任务(每几秒钟运行一次)
- ops 可通过 TaskOption 指定具体的具体运行时刻: WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) EveryWeekDay ¶
func (ts *TaskManager) EveryWeekDay(key string, weekDay int, handler TaskHandler, ops ...TaskOption) error
EveryWeekDay 创建周期性任务(每周几运行一次)
- weekDay 0-7, 0/7 => 星期日
- ops 可通过 TaskOption 指定具体的具体运行时刻:WithHour WithMinute WithSecond WithMillisecond
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) GetAllTasks ¶
func (ts *TaskManager) GetAllTasks() []TaskInfo
GetAllTasks 获取所有定时任务信息
func (*TaskManager) GetTask ¶
func (ts *TaskManager) GetTask(key string) (TaskInfo, error)
GetTask 获取指定key的定时任务信息
func (*TaskManager) OnceAfter ¶
func (ts *TaskManager) OnceAfter(key string, delay time.Duration, handler TaskHandler, ops ...TaskOption) error
OnceAfter 创建一次性延迟任务(基于一个延迟时间)
- ops 可通过 TaskOption 指定任务运行的开始时间: WithStartAt 超时时间: WithTimeout 等
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) OnceAt ¶
func (ts *TaskManager) OnceAt(key string, executeAt time.Time, handler TaskHandler, ops ...TaskOption) error
OnceAt 创建一次性定时任务(基于一个明确时间)
- executeAt 调度器内部会统一转换为本地时区后处理,如已过期则调整为当前时间(立即执行)
- ops 可通过 TaskOption 指定任务运行的超时时间: WithTimeout
- 注意:任务添加后/执行前相同Key任务的添加操作会直接覆盖前一次添加的任务
func (*TaskManager) OnceBuffer ¶
func (ts *TaskManager) OnceBuffer(key string, delay time.Duration, handler TaskHandler, ops ...TaskOption) error
OnceBuffer 创建一次性延迟任务(缓冲模式), 常用于延迟更新任务, 如缓存更新等场景
- ops 可通过 TaskOption 指定任务运行的开始时间: WithStartAt 超时时间: WithTimeout 等
- 注意:任务添加后/执行前相同Key任务的添加操作将会忽略
func (*TaskManager) RemoveAllTasks ¶
func (ts *TaskManager) RemoveAllTasks() error
RemoveAllTasks 删除所有任务
func (*TaskManager) RemoveTask ¶
func (ts *TaskManager) RemoveTask(keys ...string) error
RemoveTask 移除指定任务
func (*TaskManager) Size ¶
func (ts *TaskManager) Size() int
Size 获取定时任务数量(包含未运行、已运行的全部任务)
- 包含全部定时任务的映射(可主动通过RemoveTask删除指定任务信息)
type TaskMonitorData ¶
type TaskMonitorData struct {
AddedCount int64 `json:"added_count,string"` // 添加任务的累计次数
TimeoutCount int64 `json:"timeout_count,string"` // 执行超时累计次数
FailCount int64 `json:"fail_count,string"` // 执行失败累计次数
FinishCount int64 `json:"finish_count,string"` // 执行完成累计次数
AvgConsuming time.Duration `json:"avg_consuming,string"` // 执行平均耗时
MaxConsuming time.Duration `json:"max_consuming,string"` // 执行最长耗时
MaxConsumingKey string `json:"max_consuming_key"` // 执行最长耗时的任务Key
IsRuning bool `json:"is_runing"`
}
type TaskOption ¶
type TaskOption func(*taskOption)
func WithMillisecond ¶
func WithMillisecond(millisecond int) TaskOption
WithMillisecond 设置任务时刻:毫秒 (默认为当前毫秒)