Grails Quartz startdelay不起作用

时间:2015-11-19 16:16:10

标签: grails cron quartz-scheduler

我正在使用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

1 个答案:

答案 0 :(得分:2)

当你在cron触发器上设置startDelay时,插件基本上会修改Quartz中CronTriggerImpl类上传递给setStartTime的内容。

Quartz documentation起,开始时间定义为:

  

触发器的调度应该开始的时间。五月或五月   不是触发器的第一个实际发射时间,取决于   触发类型和其他属性的设置   触发。然而,第一次实际的第一次不会在此之前   日期。

因此,您设置的实际上是计划作业的延迟时间,而不是解雇时。这实际上并没有改变第一次执行的开火时间。