在 groovy 中手动设置石英作业的 nextFireTime

Setting nextFireTime of a quartz job manually in groovy

我想在 quartz 作业上使用自己的错误处理。当发生异常时,每个作业都有不同的等待时间。例如,作业每30秒运行一次,但当出现异常时,作业应等待5分钟。

我尝试过这种方法,但它不起作用:

SchedulerFactory sf = new StdSchedulerFactory()
Scheduler sched = sf.getScheduler()        
def name = "jobname"
Trigger trigger = sched.getTrigger(new TriggerKey("trigger_" + name))
def currentDate = new Date()
use (TimeCategory) {
    currentDate = currentDate + 300.seconds
}
trigger.nextFireTime = currentDate

作业将在 30 秒后再次运行。

我做错了什么?

我可能错了,但你确定你可以通过简单地设置 nextFireTime 属性 来安排工作吗?

我猜你必须使用 http://quartz-scheduler.org/api/2.2.0/org/quartz/Scheduler.html#rescheduleJob(org.quartz.TriggerKey, org.quartz.Trigger) 重新安排工作。

例如

SchedulerFactory sf = new StdSchedulerFactory()
Scheduler sched = sf.getScheduler()        
def name = "jobname"
Trigger trigger = sched.getTrigger(new TriggerKey("trigger_" + name))
trigger.repeatInterval = 30000
sched.rescheduleJob(trigger.name, trigger.group, trigger)

那将 运行 5 分钟内完成作业,然后您必须将其重新安排到 运行 30 秒后。