【发布时间】:2013-10-16 12:44:09
【问题描述】:
JobDetail.requestsRecovery 属性的文档说明如下
指示调度器是否应该重新执行作业 如果遇到“恢复”或“故障转移”情况。
现在,什么是“恢复”情况或“故障转移”情况?
它们有何不同?
只有当 JVM 在作业执行期间崩溃时才会发生恢复,还是如果作业执行因异常而失败也会发生?
【问题讨论】:
标签: quartz-scheduler fault-tolerance
JobDetail.requestsRecovery 属性的文档说明如下
指示调度器是否应该重新执行作业 如果遇到“恢复”或“故障转移”情况。
现在,什么是“恢复”情况或“故障转移”情况?
它们有何不同?
只有当 JVM 在作业执行期间崩溃时才会发生恢复,还是如果作业执行因异常而失败也会发生?
【问题讨论】:
标签: quartz-scheduler fault-tolerance
“Recovery situation”是通用术语,一种恢复情况是“fail-over”。
故障转移是容错系统使用的过程,通常与冗余一起使用(例如集群)。 Quartz 在集群中使用时使用故障转移并且更多 Quartz“节点”存在。
引用 documentation:
故障转移 发生在其中一个节点在执行一项或多项作业的过程中发生故障时。当一个节点发生故障时,其他节点会检测该状况并识别数据库中故障节点中正在进行的作业。 任何标记为要恢复的作业(在 JobDetail 上具有“requests recovery”属性)都将由其余节点重新执行。
恢复情况是产生“硬关机”的所有情况(即,它正在运行的进程崩溃,或机器关闭)。
回答你的第二个问题:
如果 JVM 在作业执行期间崩溃 > Quartz 将恢复作业
(因为crash是Recovery的情况)
如果作业因为异常而失败 > Quartz 不会恢复作业
(因为异常不是硬关机,所以会抛出misfire)
请参阅this 回答以激活您的工作恢复。
【讨论】: