Quartz 框架中 CronTigger 周期性调度问题
一、问题点
quartz 定时任务设置每 32 秒执行一次,如果 CronTigger 调度器,cron 表达式可能会写成这样:0/32 ?,
那么问题来了,调度执行结果为:
最近 5 次运行时间:
2019/9/27 15:12:32
2019/9/27 15:13:00
2019/9/27 15:13:32
2019/9/27 15:14:00
2019/9/27 15:14:32
从结果将会发现,循环周期为 32,28 秒。如果做分钟的间隔周期也会是一样,不满足需求,特别是有时候超过 60 的时候,不能被 60 整除的循环都会出现此问题。如果需求要求可以动态更改调度时间,就更不好做了。Cron 表达式对这种方式不是很友好。
二、解决方法
这个时候,我们可以选择使用 Simple Trigger 调度器,在具体的时间点执行一次,或者在具体的时间点执行,并且以指定的间隔重复执行若干次。