`

quartz的中断恢复处理

    博客分类:
  • J2EE
阅读更多
使用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)。
0
1
分享到:
评论
5 楼 kanbol 2012-11-26  
2110901055 写道
kanbol 写道
2110901055 写道
您好,如果我是数据库服务异常中断了一些任务,程序还在跑,当数据库服务正常后,又超过了设置的 misfireThreshold时间,那任务还会不会继续执行呢?如果不执行了那怎么处理让任务继续执行?谢谢!

如果程序正常,那job是正常执行完成(正常结束或异常结束)。
既然结束了,那就和misfireThreshold没关系了。
另外单独重新启动job吧

谢谢您的回答,重新调度这个JOB是一个方法,但是我发现我的数据服务正常后,显然超过了misfireThreshold设置时间,我没有设置RequestsRecovery属性,但任务还是可以正常运行,对于这quartz的业务流程不是很清楚,楼主怎么理解,是否可以给我详解下,谢谢。


就算数据库出问题了,但如果你job代码里对exception做了处理,没有导致job出错,那job运行状态就是正常的,和recovery、misfire就没关系。
比如数据库连接不上会一直重试
4 楼 2110901055 2012-11-25  
kanbol 写道
2110901055 写道
您好,如果我是数据库服务异常中断了一些任务,程序还在跑,当数据库服务正常后,又超过了设置的 misfireThreshold时间,那任务还会不会继续执行呢?如果不执行了那怎么处理让任务继续执行?谢谢!

如果程序正常,那job是正常执行完成(正常结束或异常结束)。
既然结束了,那就和misfireThreshold没关系了。
另外单独重新启动job吧

谢谢您的回答,重新调度这个JOB是一个方法,但是我发现我的数据服务正常后,显然超过了misfireThreshold设置时间,我没有设置RequestsRecovery属性,但任务还是可以正常运行,对于这quartz的业务流程不是很清楚,楼主怎么理解,是否可以给我详解下,谢谢。
3 楼 kanbol 2012-11-24  
2110901055 写道
您好,如果我是数据库服务异常中断了一些任务,程序还在跑,当数据库服务正常后,又超过了设置的 misfireThreshold时间,那任务还会不会继续执行呢?如果不执行了那怎么处理让任务继续执行?谢谢!

如果程序正常,那job是正常执行完成(正常结束或异常结束)。
既然结束了,那就和misfireThreshold没关系了。
另外单独重新启动job吧
2 楼 2110901055 2012-11-19  
您好,如果我是数据库服务异常中断了一些任务,程序还在跑,当数据库服务正常后,又超过了设置的 misfireThreshold时间,那任务还会不会继续执行呢?如果不执行了那怎么处理让任务继续执行?谢谢!
1 楼 yangtao309 2011-08-30  
哈哈......
quartz要好好学习了

相关推荐

    Quartz定时任务处理案例基于jsp

    这是一个完整的使用Quartz定时处理案例,虽然简单,但是一个可运行的案例项目,包括了Quartz的包,及配置文件quartz.properties和quartz_jobs.xml文件的配置方法,及在web.xml文件中配置Quartz等方法。看了这个例子...

    Quartz调度、终止执行的任务

    使用Quartz调度任务,根据需要人为的终止某个任务,适用于很多常见的场景

    Spring Quartz 动态暂停、恢复、修改定时任务

    Spring Quartz 动态暂停、恢复、修改定时任务的一个demo,使用maven构建,框架采用spring springmvc jpa,数据库mysql,含数据库脚本,运行可用,页面访问地址http://localhost:8080/quartz_demo/quartz/list

    4个案例:Quartz2D图片处理

    通过4个案例认识quartz2D的图形处理 典型应用:生成圆形头像

    quartz指南,Quartz 工程

    文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...

    quartz quartz-1.8.6 dbTables 建表sql

    quartz quartz-1.8.6 dbTables quartz动态任务调度需要的数据库脚本。

    springboot 使用quartz+XML格式处理定时任务

    springboot 使用quartz+XML格式处理定时任务 springboot 使用quartz+XML格式处理定时任务 springboot 使用quartz+XML格式处理定时任务 功能描述:https://www.cnblogs.com/personblog/p/14030746.html

    quartz简单实例quartz简单实例

    quartz简单实例quartz简单实例quartz简单实例quartz简单实例

    quartz-2.3.2-API文档-中文版.zip

    赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...

    quartz-1.6.0.jar和quartz-all-1.6.0.jar

    该压缩包内包含两个quartz的jar包, 分别是quartz-1.6.0.jar和quartz-all-1.6.0.jar

    quartz-2.2.3版本的quartz初始化sql语句

    quartz-2.2.3版本的quartz初始化sql语句

    ssm整合quartz定时任务实现动态增删改查,暂停任务,恢复任务

    ssm整合quartz 并持久化到数据库中,实现动态增删改查,暂停任务,恢复任务等 将链接内的target文件直接放到项目ssmquartztest文件夹下 运行环境: jdk5+tomcat7+mysql+eclipse+maven lib jar包下载地址 地址1:...

    lucene与quartz例子

    lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子

    quartz-2.3.0-API文档-中文版.zip

    赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...

    quartz1.5,quartz1.6,quartz1.8

    Quartz1.5,Quartz1.6,Quartz1.8。Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个...

    Quartz介绍.docx

    Quartz使用方法Quartz使用方法Quartz使用方法Quartz使用方法Quartz使用方法

    Quartz.NET-2.0

    Quartz.NET框架的核心是调度器。调度器负责管理Quartz.NET应用运行时环境。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz.NET采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器...

    quartz 时间配置规则

    quartz 时间配置规则quartz 时间配置规则quartz 时间配置规则quartz 时间配置规则quartz 时间配置规则quartz 时间配置规则

    Quartz原理及实例

    Quartz原理及实例,spring4.x+Quartz.2.2.1结合的开发,静态和动态实例

    quartz内部表.sql

    quartz内部表.sql。

Global site tag (gtag.js) - Google Analytics