【问题标题】:Setting nextFireTime of a quartz job manually in groovy在 groovy 中手动设置石英作业的 nextFireTime
【发布时间】:2015-06-01 17:38:52
【问题描述】:

我想对石英作业使用自己的错误处理。当发生异常时,每个作业都有不同的等待时间。例如,一个作业每 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 秒后再次运行。

我做错了什么?

【问题讨论】:

    标签: groovy quartz-scheduler


    【解决方案1】:

    我可能错了,但您确定可以通过简单地设置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 秒内运行。

    【讨论】:

    • 感谢您的回答,可惜没有简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多