我正在尝试重新安排这样的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?
进行这些调用时,作业正在运行。然而,工作只是停止射击。可能是什么原因?
答案 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();
似乎更适合那种。