例如:
测试结果:
从结果中,我可以可以看出,由于任务运行超时,而导致在预定时间内执行的任务并没有丢失,而是放进了任务队列,在当前任务执行完毕后,即刻执行任务。
<!-- 定义job --><bean name="mathsJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 注入的service层 -->
<property name="targetObject" ref="cerpToCposMenuJob" />
<!-- 调用的方法 -->
<property name="targetMethod" value="runWork" />
<!--concurrent为true,则允许一个QuartzJob并发执行,否则就是顺序执行 -->
<property name="concurrent" value="false" />
</bean>
恢复Quartz的故障恢复
iteye_19215
关注
0点赞·914人阅读
在默认的情况下,Quartz中所提交的任务都是独立的运行在内存中的线程,这意味着一旦机器出现故障或任何原因这个线程被干掉,那么提交的任务就无法继续也无法恢复。如果我们想要在系统出现故障的情况下恢复Quartz中的任务,就要把当前任务状态持久化,然后在系统恢复之后恢复任务的执行,这就是基本的解决思路。Quartz在这方面也提供了支持。
首先,持久化的问题。要进行恢复就要将任务进行的状态保存下来,Quartz内置了数据库持久化的模块,我们要做的只是在配置文件中增加数据源,并在数据库中手动建好表就可以了。在%Quartz_HOME%/docs/dbTables目录下有大部分数据的建表语句,可以直接拿到数据库中进行建表 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)