在 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 秒后。
我想在 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 秒后。