Quartz JobDetail请求恢复

19

JobDetail.requestsRecovery属性的文档如下所述:

指示调度程序是否在遇到“恢复”或“故障转移”情况时重新执行作业。

现在,“恢复”情况或“故障转移”情况是什么?

它们有什么不同?

仅当JVM在作业执行期间崩溃时才会发生恢复,还是因为异常而导致作业执行失败也会发生恢复?

1个回答

18
一个“恢复情况”是通用术语,其中一种恢复情况是“故障转移”。
“故障转移”是一种由容错系统使用的过程,通常与冗余(例如集群)一起使用。当Quartz在集群中使用并存在更多Quartz“节点”时,会使用故障转移。
引用文档
“故障转移”发生在其中一个节点在执行一个或多个作业时失败。当一个节点失败时,其他节点检测到该条件,并确定在失败节点内进行的正在进行的作业,任何标记为恢复(具有JobDetail上的“请求恢复”属性)的作业将由剩余的节点重新执行。
“恢复情况”是每种产生“硬关闭”的情况(即进程崩溃或计算机关闭) 。

回答你的第二个问题:

  • 如果JVM在作业执行期间崩溃,Quartz将恢复作业

    (因为崩溃是恢复情况)

  • 如果作业执行失败,因为异常,Quartz将不会恢复作业

    (因为异常不是硬关闭,而是抛出一个misfire)

请参见this答案以激活作业的恢复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接