【问题标题】:Quartz Cron Misfire石英 Cron 失火
【发布时间】:2018-10-13 07:10:48
【问题描述】:

我是新的 Quartz 调度器,遇到了一些麻烦。

当我使用简单的调度器如下:

Trigger misFiredTriggerB = TriggerBuilder.newTrigger().startAt(DateUtils.addSeconds(new Date(), -63)).withSchedule(SimpleScheduleBuilder.simpleSchedule().withMisfireHandlingInstructionFireNow()).build();

它工作正常,根据情况考虑失火阈值和失火指令。

但是,当我使用 cron 调度程序并使用当前时间前几秒的时间时,它既不考虑阈值也不考虑失火指令。

Trigger misFiredTriggerA =  TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").withSchedule(CronScheduleBuilder.cronSchedule("30,35,38 50 17 * * ?").withMisfireHandlingInstructionFireAndProceed()).build();

cron 有什么我做错了吗?

另一个问题是如何轻松更改 eclipse 中的失火阈值,因为默认设置为 60000?

提前谢谢你。

【问题讨论】:

    标签: cron quartz-scheduler scheduler misfire-instruction


    【解决方案1】:

    Simple 和 Cron 触发器之间存在区别。

    • 简单触发器执行计划在现在之前或之后的确切日期执行。在您的情况下,现在已经超过 60 秒(属性 org.quartz.jobStore.misfireThreshold(以毫秒为单位)),因此 Quartz 假定此类触发器为 misfired。
    • Quartz 使用 Cron Trigger 来安排在未来最近的日期执行,该日期尊重 cron 表达式。因此,在您的情况下,作业将于明天 17:50:30 触发

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      相关资源
      最近更新 更多