石英:执行 cron 触发器,跳过下一次执行



我在java应用程序中使用石英cron触发器。是否可以在执行时间之前手动触发 cron 触发器,并跳过下一次执行?

示例:每天早上 6 点执行一个 cron 触发器。但是今天我想在早上 5 点执行该触发器,但明天早上 6 点继续执行(即跳过今天的执行(。

这可能吗?我用 triggerJob 尝试过,但它现在执行 cron 作业并在其原始触发器处再次触发它。

石英不支持开箱即用,但您可以使用几个自定义标志来实现它。在手动触发作业的类中,您可以将

JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("manualExecution", true);
scheduledEventRuleJobScheduler.triggerJob(JobKey.jobKey("myJob"), jobDataMap);

您的工作类可能如下所示

@PersistJobDataAfterExecution
public class MyJob implements Job {
  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    JobDataMap mergedJobDataMap = context.getMergedJobDataMap();
    if (mergedJobDataMap.getBoolean("skipNextExecution")) {
      context.getJobDetail().getJobDataMap().remove("skipNextExecution");
      return;
    }
    if (mergedJobDataMap.getBoolean("manualExecution")) {
      context.getJobDetail().getJobDataMap().put("skipNextExecution", true);
    }
    doYourStuffHere();
  }

这将在手动触发时执行作业,并在下一次(计划的(作业执行中不执行任何操作。

最新更新