【问题标题】:Quartz Persistent Jobs mis-fire recovery using JDBC JobStoreQuartz Persistent Jobs 使用 JDBC JobStore 进行错误恢复
【发布时间】:2014-03-20 21:47:51
【问题描述】:

我正在 Spring 中使用 JDBC JobStore 实现 Quartz 调度程序。我有一个用例,如果我的应用程序崩溃并且它有作业要在崩溃和调度程序重新启动之间的时间范围内执行。我的方法是将所有作业的 nextExecutionTime 与调度程序启动时的当前时间进行比较,如果 nextExecutionTime 小于当前时间,则执行作业。


但我有一个强烈的想法,即有更好的方法来完成这项工作。要么由 Quartz 支持,要么已经由某人实现。您能为此提出一个更好的方法吗?

【问题讨论】:

    标签: java spring spring-mvc jdbc quartz-scheduler


    【解决方案1】:

    失火指令功能是否符合您的要求?请参阅Quartz Tutorial Lesson 4 上的教程,更具体地说是Example - Job Misfires 您可能需要在构建触发器时调用withMisfireHandlingInstructionFireNow()

    【讨论】:

    • 是的,我调查了它,但我不确定它是否能够赶上作业错过执行的次数。就像在调度程序重新启动时,该作业应该运行 3 次,那么该作业现在会在应用程序恢复时运行三次还是只运行一次?
    • 如果你想运行 3 次,你只需要 "ignore misfires" 策略 -- withMisfireHandlingInstructionIgnoreMisfires() 见quartz-scheduler.org/api/2.1.0/org/quartz/… -- 如果你只想运行一次,做 withMisfireHandlingInstructionFireAndProceed -- quartz-scheduler.org/api/2.1.0/org/quartz/…
    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多