Quartche作业在Reschedule后停止触发

时间:2016-07-13 14:24:33

标签: java quartz-scheduler

我正在尝试重新安排这样的Quartz工作:

TriggerBuilder<SimpleTrigger> tb =  ldTrigger.getObject().getTriggerBuilder();
Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(interval)).build();
scheduler.getScheduler().rescheduleJob(oldTrigger.getObject().getKey(), newTrigger);

如// http://www.quartz-scheduler.org/documentation/quartz-2.x/cookbook/UpdateTrigger.html中所述   和Spring + Quartz resheduling or updating the trigger?

进行这些调用时,

作业正在运行。然而,工作只是停止射击。可能是什么原因?

1 个答案:

答案 0 :(得分:0)

您可能错过了对repeatForever()的调用:

Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(interval).repeatForever()).build();

如果您不使用withRepeatCount(x)repeatForever(),则告诉调度程序该作业应该只运行一次。由于作业已经在运行,因此调度程序将在完成时停止作业,因为它已经执行了一次你告诉它。

如果你实际上不希望希望在给定的时间间隔内安排无限次执行,而只是在x分钟后执行一次,请使用:

Trigger newTrigger = tb.startAt(DateBuilder.futureTime(interval, DateBuilder.Interval.MINUTE)).build();

似乎更适合那种。