引用 11 楼 zhujiazhi 的回复:貌似把那个timer弄成静态变量,在全局里面hold住就不会被回收了 引用 6 楼 方法内写如下代码:SystemTimersTimer objTimer = new SystemTimersTimer();objTimerInterval = 时间; //这个时
恢复
Quartz的故障恢复

iteye_19215
关注
0点赞·914人阅读
在默认的情况下,Quartz中所提交的任务都是独立的运行在内存中的线程,这意味着一旦机器出现故障或任何原因这个线程被干掉,那么提交的任务就无法继续也无法恢复。如果我们想要在系统出现故障的情况下恢复Quartz中的任务,就要把当前任务状态持久化,然后在系统恢复之后恢复任务的执行,这就是基本的解决思路。Quartz在这方面也提供了支持。
首先,持久化的问题。要进行恢复就要将任务进行的状态保存下来,Quartz内置了数据库持久化的模块,我们要做的只是在配置文件中增加数据源,并在数据库中手动建好表就可以了。在%Quartz_HOME%/docs/dbTables目录下有大部分数据的建表语句,可以直接拿到数据库中进行建表 *** 作。
以下就对两种定时任务框架进行简单说明。
github地址:>
主要有三个核心概念:调度器、任务和触发器。
三者关系简单来说就是,调度器负责调度各个任务,到了某个时刻或者过了一定时间,触发器触动了,特定任务便启动执行。概念相对应的类和接口有:
1)JobDetail:望文生义就是描述任务的相关情况;
2)Trigger:描述出发Job执行的时间触发规则。有SimpleTrigger和CronTrigger两个子类代表两种方式,一种是每隔多少分钟小时执行,则用SimpleTrigger;另一种是日历相关的重复时间间隔,如每天凌晨,每周星期一运行的话,通过Cron表达式便可定义出复杂的调度方案。
3)Scheduler:代表一个Quartz的独立运行容器,Trigger和JobDetail要注册到Scheduler中才会生效,也就是让调度器知道有哪些触发器和任务,才能进行按规则进行调度任务。
quartz可以不适用数据库吗
QUARTZ任务不写入数据库
在使用quartz遇到了很诡异的bug,通过google及百度都没有找到解决方案,最后通过搭建quartz源码环境,发现问题所在。
最近接手一个系统的升级开发,系统中使用了quartz任务调度,在大部分的需求开发完毕后,对之前开发的部分功能模块进行测试及优化,当优化任务调度并进行测试,问题出现了,每当我添加定时任务时,任务添加成功且在到达定时时间后,任务会被执行,但是任务切没有写入数据库!!!
你的问题我想分两部分回答:
1quartz有数据库方式保存job,以及触发器这些数据的
具体可以看我的一篇blog:
quartz数据库方式与web工程整合
里面还有一个中文版的quartz的指南,可以帮你搞定数据库方式的quartz
2至于你说的1000个触发器,这么多的任务调度我没做过,不清楚结果会怎么样,这部分还需要再研究一下。
转载
以上就是关于Quartz数据库动态定时器Repeat count must be >= 0全部的内容,包括:Quartz数据库动态定时器Repeat count must be >= 0、quartz定时任务执行时系统故障错过了时间点后续会自动修复吗、定时任务框架选型Quartz/Xxl等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)