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 其他执行也一样...

注意:@DisallowConcurrentExecutionMyJobExecutor 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);
}