加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 教程 > 正文

Quartz1.6有状态JOB碰到的棘手问题既解决措施

发布时间:2021-12-11 12:31:51 所属栏目:教程 来源:互联网
导读:关于Quartz,我想不要多做介绍了,凡是接触JAVA调度的都会知道这个开源的调度框架.本文就重点说下Quartz中有状态JOB的使用心得.因为我感觉国内的有状态JOB相关的资料比较少,所以在此提供一部分个人的一点经验.主要是针对使用quartz1.6的有状态JOB可能出现的一

关于Quartz,我想不要多做介绍了,凡是接触JAVA调度的都会知道这个开源的调度框架.本文就重点说下Quartz中有状态JOB的使用心得.因为我感觉国内的有状态JOB相关的资料比较少,所以在此提供一部分个人的一点经验.主要是针对使用quartz1.6的有状态JOB可能出现的一个棘手问题.
 
1.关于有状态JOB(StatefulJob)
 
网上有很多关于有状态JOB的作用与使用的文章,我借鉴下,做下简单的说明:
 
a). 实现有状态JOB只需要实现org.quartz.StatefulJob 接口即可,StatefulJob 接口仅仅是扩展了 Job 接口,未加入新的方法.
 
b). Job(无状态)和 StatefulJob 在框架中使用中存在两个关键差异。首先,JobDataMap 在每次执行之后重新持久化到 JobStore 中。这样就确保你对 Job 数据的改变直到下次执行仍然保持着。你可以在有状态 Job 中简单的通过 map 的 put() 方法来修改 JobDataMap.已存在的任何数据会被新的数据覆盖掉。你也能对无状态的 Job 这么做,但是因为对于无状态 Job 来说,JobDataMap 不会持久化,所以数据不会保存下来。
 
c).  两个或多个有状态的 JobDetail 实例不能并发执行。说的是你创建并注册了一个有状态 JobDetail 到 Scheduler 上。你还建立了两个 Trigger 来触发这个 Job:一个每五分钟触发,另一个也是每五分钏触发。假如这两个 Trigger 试图在同一时刻触发 Job,框架是不允许这种事情发生的。第二个 Trigger 一直会被阻塞直到第一个结束。
 
--------------------------------------分割线 --------------------------------------
 
先在在附件里附上quartz2.0需要的jar包,和quartz2.0的docs即sql脚本。

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读