【问题标题】:Interrupted Quartz Trigger does not resume中断的石英触发器不恢复
【发布时间】:2012-05-07 22:41:05
【问题描述】:

在我的项目中,我正在创建一个即时 SimpleTrigger,它会调用一个虚拟作业(执行的操作持续时间超过 30 秒)。我已将失火策略设置为 MISFIRE_INSTRUCTION_FIRE_NOW 并且作业请求恢复标志也设置为 true。

作业开始后(Quartz DB 存储中的状态从 READY 转变为 RUNNING),我故意反弹(重新启动)整个系统,这会中断正在运行的作业。当系统恢复到活动状态时,我看到被中断的作业根本不会重新启动。

在我们的生产系统中,这将造成严重伤害,因为任何软件更新都会无意中中断该实例上正在运行的作业,并且这些作业根本不会再次触发(关键的一次性作业可能未完成,从而导致不受欢迎的即将到来的工作中的涟漪)。从我们的角度来看,这是非常不可取的。

我想要的是在系统再次备份后也会触发被中断的作业(基本上相同的行为是触发计划时间是在系统停机期间,并且策略是 MISFIRE_INSTRUCTION_FIRE_NOW)。这里有解决方法吗?

【问题讨论】:

    标签: quartz-scheduler


    【解决方案1】:

    为此,您必须在 Java 和 Quartz 2.X 中使用选项 requestRecovey 配置 Job:

    JobDetail jd = newJob(job).withIdentity(name, group) //
                .requestRecovery()// ask scheduler to re-execute this job
                .build(); // if it was in progress when the scheduler went down...
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2013-01-29
      • 1970-01-01
      • 2018-03-06
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多