Quartz Scheduler 下一次执行时间等于当前时间加上调度器的间隔
Quartz Scheduler next execution time equal current time plus interval of scheduler
我正在使用 Quartz 调度程序,一切都按照要求完美运行。但是有一件事我想实现,即我希望我的 下一次执行 作业将在 (currentFinishTime + intervalOfScheduler)[=13= 上触发]
间隔 30 秒的作业执行示例:
Job-1-First-Executed at 10-10-2020 18:30:05
Job-1-Second-Executed at 10-10-2020 18:30:35
Job-1-Third-Executed at 10-10-2020 18:31:05
因此,如果作业需要 20 秒执行,那么下一次触发将在 05+20+30 = 55 发生。而不是 10-10-2020 18:30:35,它将在 10-10 触发-2020 18:30:55 其他执行也一样...
注意:@DisallowConcurrentExecution
和 MyJobExecutor implements Job {public void execute(JobExecutionContext context){...}}
已经实施。
请帮我解决问题。
经过大量研究,我实现了满足我要求的自己的解决方案。代码如下:
if(isExecutionTimeIncluded) {
final TriggerBuilder triggerBuilder = context.getTrigger().getTriggerBuilder();
final Trigger newTrigger = triggerBuilder
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(cpoPullJobData.getInterval())
.repeatForever())
.startAt(futureDate(interval/*eg.30*/, DateBuilder.IntervalUnit.SECOND);)
.build();
context.getScheduler().rescheduleJob(context.getTrigger().getKey(), newTrigger);
}
我正在使用 Quartz 调度程序,一切都按照要求完美运行。但是有一件事我想实现,即我希望我的 下一次执行 作业将在 (currentFinishTime + intervalOfScheduler)[=13= 上触发]
间隔 30 秒的作业执行示例:
Job-1-First-Executed at 10-10-2020 18:30:05
Job-1-Second-Executed at 10-10-2020 18:30:35
Job-1-Third-Executed at 10-10-2020 18:31:05
因此,如果作业需要 20 秒执行,那么下一次触发将在 05+20+30 = 55 发生。而不是 10-10-2020 18:30:35,它将在 10-10 触发-2020 18:30:55 其他执行也一样...
注意:@DisallowConcurrentExecution
和 MyJobExecutor implements Job {public void execute(JobExecutionContext context){...}}
已经实施。
请帮我解决问题。
经过大量研究,我实现了满足我要求的自己的解决方案。代码如下:
if(isExecutionTimeIncluded) {
final TriggerBuilder triggerBuilder = context.getTrigger().getTriggerBuilder();
final Trigger newTrigger = triggerBuilder
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(cpoPullJobData.getInterval())
.repeatForever())
.startAt(futureDate(interval/*eg.30*/, DateBuilder.IntervalUnit.SECOND);)
.build();
context.getScheduler().rescheduleJob(context.getTrigger().getKey(), newTrigger);
}