跳到主要内容

定时任务

定时任务模块提供数据库驱动的 Cron 任务调度能力,支持在管理后台动态创建、修改、启停定时任务,无需重启服务。系统内置的任务处理器覆盖数据统计、提醒推送、报表生成等场景,业务模块也可注册自定义处理器。

核心能力

能力说明
Cron 表达式6 段式(含秒),如 0 0 9 * * * 表示每天 9:00 执行
动态管理通过后台 CRUD 任务,修改后自动重载调度器
手动触发支持手动执行一次(不影响下一次定时触发)
执行日志每次执行自动记录状态、耗时、输出信息、异常堆栈
处理器注册各业务模块通过 RegisterJobHandler 注册处理器

任务管理

任务属性

字段说明
任务名称可读的任务描述
任务分组任务分类(便于筛选管理)
Cron 表达式6 段式:秒 分 时 日 月 周,如 0 */30 * * * *(每 30 分钟)
处理器BeanClass 名称,对应代码中注册的处理器标识
状态运行中 / 暂停

调度引擎

调度引擎基于 robfig/cron/v3,服务启动时自动加载所有 status=1 的任务。任务修改后(增删改)会触发调度器重载,动态生效而无需重启。

// 业务模块注册处理器示例
func init() {
enterprise.RegisterJobHandler("ReminderJob", &ReminderHandler{})
}

手动触发

手动触发通过独立的 POST /jobs/:id/run 接口实现,异步执行(fire-and-forget),不阻塞接口返回。执行记录会标注触发来源为 MANUAL

执行日志

每次任务执行(无论定时还是手动)都会自动生成一条日志记录:

字段说明
状态成功 / 失败
耗时执行消耗的毫秒数
输出信息处理器返回的执行结果或日志
异常堆栈失败时的完整 panic 堆栈
触发来源SCHEDULE(定时触发)/ MANUAL(手动触发)
异常恢复

调度器内置 panic recovery,单个任务执行 panic 不会影响调度器本身和其他任务的执行。panic 信息会被捕获并记录到执行日志的异常堆栈字段。

内置处理器

处理器说明
CRM 跟进提醒每日 9:00 扫描超期未跟进的计划,推送站内消息
公海回收定时检查长期未跟进的客户/线索,自动回收到公海池
数据统计定时汇总各模块业务数据,生成日报/周报
扩展处理器

新增定时任务处理器需在代码中实现 JobHandler 接口并在模块 init() 中注册,然后即可在后台通过 BeanClass 名称引用。不支持纯后台动态脚本。