Scheduler 常见问题
这一页集中回答接入
soulsoft_scheduler时最容易遇到的几个问题。
通用问题
任务为什么没有执行
先按这个顺序检查:
- 是否调用了
scheduler.start() - 任务是否已经通过
scheduleJob()注册 - Cron 表达式是否正确
- 任务是否被暂停
如果是 Host 集成模式,再检查是否注册了 addSchedulerHostedService()。
想做简单轮询,用 Cron 还是固定间隔
- 固定每隔一段时间执行:优先
withIntervalTrigger() - 按自然时间点执行:用
withCronTrigger()
例如:
- 每 30 秒同步一次缓存:间隔触发器
- 每天凌晨 2 点跑清理:Cron
任务参数应该放哪
优先放 jobData:
cangjie
job.withJobData { d => d.set<String>(“reportType”, “daily”) }任务里通过 context.jobData.get<T>() 读取。
并发与执行
默认会并发执行同一个任务吗
不会。当前库默认是不并发执行同任务的。
如果显式调用了 allowConcurrencyExecution(),才会允许并发。
管理操作
可以批量暂停一组任务吗
可以。IScheduler 支持按匹配器批量操作:
cangjie
scheduler.pauseJobs { key => key.group == “reports” }恢复和移除也有同类方法。
能力边界
当前支持分布式协调吗
从当前公开源码和 README 看,稳定公开能力主要是单机调度、Host 集成、Cron/间隔触发、任务监听和任务数据。文档暂时不把”分布式协调”作为现有能力说明,避免写出与代码不一致的内容。