Quartz 如何在重新启动之间存储作业详细信息(关于上次成功 运行、失败等)?

How does Quartz store job details between restarts (regarding last successful run, misfires etc.)?

从上午 9 点开始,每小时在 Quartz 调度程序中安排一个任务。 应用程序在上午 10 点停止,并在中午 12 点重新启动。在这种情况下,将错过上午 10 点和上午 11 点的两次执行。

那么Scheduler再次启动时,会考虑多少次失火?

由于作业是在上午 9 点执行的,因此应该考虑上午 10 点和上午 11 点的两次失火。如果是这样,那么当应用程序已经重新启动时,Quartz 如何识别最后一次成功的调度?

你问了两个问题:

  • 多少次失火会被认为是?
    如您所料,将 检测到 .
    两次失火(上午 10 点和上午 11 点) 然而,Quartz 可能会也可能不会 考虑 所有这些:根据每个触发器中配置的 misfire 指令,Quartz 可能决定只考虑最后一次 misfire,或者忽略它们。

  • Quartz 如何在重新启动之间存储作业详细信息?
    根据您的配置,Quartz 将通过其 JDBCJobStore (Java) / AdoJobStore (.NET) 将作业数据存储在数据库中,或通过其 RAMJobStore.
    当使用数据库存储时,Quartz 将在计划、运行、完成等时将所有作业详细信息保存到其中;并在重新启动时从中检索所述详细信息。
    使用 RAM 存储时,作业信息不会在调度程序 运行 之间保留。如果调度程序停止然后重新启动,则所有作业都需要重新调度;此外,不会检测到失火。

所有这些都在Quartz's official documentation中进行了解释,我建议您到那里看看以获取更详细的信息。