Spring2.x 中使用 Quartz 任务调度框架 覃正平 csdxqzp@163.com
1.
1.
1.
1. Quartz
Quartz
Quartz
Quartz 调度框架介绍
Quartz 是个开放源码项目,提供了丰富的作业调度集。 希望您 在阅读完本文并看过代码 演示 后 , 可
以 把 Quartz 的基本特性应用到任何 Java ™ 应用程序中。
现代的 Web 应用程序框架在范围和复杂性方面都有所发展,应用程序的每个底层组件也必须相应地
发展。作业调度是现代系统中对 Java 应用程序的一般要求,而且也是对 Java 开发人员一贯的要求。
虽然目前的调度技术比起原始的数据库触发器标志和独立的调度器线程来说 , 已经发展了许多 , 但是作业
调度仍然不是个小问题。对这个问题最合适的解决方案就是来自 OpenSymphony 的 Quartz API 。
Quartz 是个开源的作业调度框架 , 为在 Java 应用程序中进行作业调度提供了简单却强大的机制
。
Quartz 允许开发人员根据时间间隔 ( 或天 ) 来调度作业 。 它实现了作业和触发器的多对多关系 , 还能把
多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一
个事件组合多个作业。虽然可以通过属性文件(在属性文件中可以指定 JDBC 事务的数据源、全局作业
和 / 或触发器侦听器、插件、线程池,以及更多)配置 Quartz ,但它根本没有与应用程序服务器的上下
文或引用集成在一起。结果就是作业不能访问 Web 服务器的内部函数;例如,在使用 IBM WebSphere
应用服务器时,由 Quartz 调度的作业并不能影响服务器的动态缓存和数据源。
2.
2.
2.
2. 作业和触发器介绍
Quartz 调度包的两个基本单元是作业( Job )和触发器( Trigger ) 。作业是能够调度的可执行任务,
触发器 提供了对作业的调度 。 虽然这两个实体很容易合在一起 , 但在 Quartz 中将它们分离开来是有原
因的 , 而且也很有益处 。 通过把要执行的工作与它的调度分开 , Quartz 允许在不丢失作业本身或作业的
上下文的情况下,修改调度触发器。而且,任何单个的作业都可以有多个触发器与其关联。
3.
3.
3.
3. 整体调度模型
调度众多触发器
任务调度器
SchedulerBean
SchedulerBean
SchedulerBean
SchedulerBean
触发器 1
TriggerBean
TriggerBean
TriggerBean
TriggerBean
触发器 2
TriggerBean
TriggerBean
TriggerBean
TriggerBean
触发器 3
TriggerBean
TriggerBean
TriggerBean
TriggerBean
作业
Job
Job
Job
Job
作业
Job
Job
Job
Job
作业
Job
Job
Job
Job
作业
Job
Job
Job
Job
作业
Job
Job
Job
Job
作业
Job
Job
Job
Job
执行各种任务 / 作业