学习存储技术的5个阶段
2008-11-28 10:00
471 查看
使用jobstore来处理程序中断后的恢复
先看下几个处理时间点上的表状态
生成任务时会往job_details和triggers表插数据(这两个表关联的其它详细表就不多说了)
如果job还没开始执行时程序就中断了,
下次程序启动时会判断当前时间-预计执行时间是否小于misfireThreshold,是则正常执行,否则不执行了
如果是执行过程中中断呢?
job执行中时会往fired_triggers表插数据
如果这时程序中断,而job又设置了RequestsRecovery为true,则该job会被重新执行(不受misfireThreshold影响,因为根本就不是misfire)。
可以通过JobExecutionContext.isRecovering()来判断是否是recover,因为很多时候恢复的任务要先做一些清理工作。
如果RequestsRecovery为false,则不会恢复执行。
另外还有一点要注意,如果job设置了listener,则在jobWasExecuted执行完成后,任务相关的信息才会被从数据库里删除,表示真正执行完成。
如果job的execute执行完了,但在listener的jobWasExecuted()里程序出错或中断的话,quartz记录的任务状态还是运行中,下次任务还是会被恢复(RequestsRecovery=true)。
先看下几个处理时间点上的表状态
生成任务时会往job_details和triggers表插数据(这两个表关联的其它详细表就不多说了)
如果job还没开始执行时程序就中断了,
下次程序启动时会判断当前时间-预计执行时间是否小于misfireThreshold,是则正常执行,否则不执行了
如果是执行过程中中断呢?
job执行中时会往fired_triggers表插数据
如果这时程序中断,而job又设置了RequestsRecovery为true,则该job会被重新执行(不受misfireThreshold影响,因为根本就不是misfire)。
可以通过JobExecutionContext.isRecovering()来判断是否是recover,因为很多时候恢复的任务要先做一些清理工作。
如果RequestsRecovery为false,则不会恢复执行。
另外还有一点要注意,如果job设置了listener,则在jobWasExecuted执行完成后,任务相关的信息才会被从数据库里删除,表示真正执行完成。
如果job的execute执行完了,但在listener的jobWasExecuted()里程序出错或中断的话,quartz记录的任务状态还是运行中,下次任务还是会被恢复(RequestsRecovery=true)。
相关文章推荐
- 学习存储技术的5个阶段
- 收藏__学习存储技术的5个阶段
- 学习存储技术的5个阶段
- 学习存储技术的5个阶段
- 学习存储技术的5个阶段
- 学习存储技术的5个阶段
- 学习存储技术的5个阶段 ZT
- 存储技术学习阶段
- 网络存储学习之网络存储技术的发展现状及趋势
- 机器学习入门阶段程序员易犯的5个错误
- 2008年最值得学习的5个Java技术
- IT技术学习指导之Linux系统入门的4个阶段(纯干货带图)
- 初级程序员学习新编程技术的5个诀窍
- 今天开始每天写点技术博客 总结一下每个阶段的学习
- IT技术学习指导之Linux系统入门的4个阶段
- 从研发角度谈存储技术的学习
- Windows CE的存储与地址映射技术学习
- 内存管理学习之存储管理技术
- 计算机学习层次划分第一阶段:个人能力:技能基础:技术属性
- 从研发角度谈存储技术的学习