JobDetail.requestsRecovery
属性的文档说明了以下内容
指示调度程序是否应重新执行作业 如果遇到'恢复'或'故障转移'的情况。
现在,什么是“复苏”情况或“故障转移”情况?
他们有什么不同?
只有在作业执行期间JVM崩溃时才会发生恢复,或者如果作业执行因异常而失败,是否会发生恢复?
答案 0 :(得分:6)
“恢复情况”是通用术语,一种恢复情况是“故障转移”。
故障转移是通常与冗余(例如群集)一起使用的容错系统使用的过程。 Quartz在群集中使用故障转移时, more Quartz“nodes”存在。
引用 documentation:
当其中一个节点在执行一个或多个作业时发生故障时,会发生故障转移。当节点发生故障时,其他节点会检测到该情况并识别数据库中发生故障的节点中正在进行的作业。 标记为恢复的任何作业(在JobDetail上具有“请求恢复”属性)将由其余节点重新执行。
恢复情况是产生“硬关机”的所有情况(即它在崩溃中运行的过程,或者机器已关闭)。
回答你的第二个问题:
如果JVM在作业执行期间崩溃> Quartz将恢复工作
(因为崩溃是恢复情况)
如果由于异常而导致作业执行失败> Quartz无法恢复工作
(因为异常不是硬关闭,而是引发 misfire )
请参阅this答案以激活您的工作恢复。