我正在使用Grails 2.4.5和plugin quartz 1.0.2。我的工作:
class NotWellpaidJob {
def staticaService
static triggers = {
cron name: 'cronTrigger',startDelay:3000, cronExpression: "0/20 58 16 ? * MON-FRI"
}
def execute() {
print new Date()
}
}
我的输出:
Thu Nov 19 16:58:00 CET 2015
Thu Nov 19 16:58:20 CET 2015
Thu Nov 19 16:58:40 CET 2015
问题:
为什么 startDelay 不会延迟首次执行3秒,第一个日期时间不是星期四11月19日16:58:03 CET 2015 ?
答案 0 :(得分:2)
当你在cron触发器上设置startDelay
时,插件基本上会修改Quartz中CronTriggerImpl类上传递给setStartTime
的内容。
从Quartz documentation起,开始时间定义为:
触发器的调度应该开始的时间。五月或五月 不是触发器的第一个实际发射时间,取决于 触发类型和其他属性的设置 触发。然而,第一次实际的第一次不会在此之前 日期。
因此,您设置的实际上是计划作业的延迟时间,而不是解雇时。这实际上并没有改变第一次执行的开火时间。