quartz单实例任务超时处理

quartz单实例任务超时处理,第1张

当 job 类上添加了 @PersistJobDataAfterExecution 和 @DisallowConcurrentExecution ,就说明该类是一个单实例任务,在同一时间,只会有一个任务实例运行。

例如:

测试结果:

从结果中,我可以可以看出,由于任务运行超时,而导致在预定时间内执行的任务并没有丢失,而是放进了任务队列,在当前任务执行完毕后,即刻执行任务。

<!-- 定义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目录下有大部分数据的建表语句,可以直接拿到数据库中进行建表 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9885278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存