Quartz 开发指南 中文版 1. 第一课:使用Quartz 2. 第二课:Jobs And Triggers 3. 第三课:更多关于Jobs和JobDetails的内容 4. 第四课:关于Triggers更多的内容 5. 第五课:SimpleTriggers 6. 第六课: CronTriggers 7. 第七课: TriggerListeners和JobListeners 8. 第八课: SchedulerListeners 9. 第九课: JobStores 10. 第十课: Configuration, Resource 使用及SchedulerFactory 11. 第十一课: 高级(企业级)特性 12. 第十二课: 其他特性 ### Quartz 开发指南知识点梳理 #### 一、Quartz 功能简介 - **特性概述**: - **独立运行**:Quartz 可以嵌入到任何独立的应用中运行。 - **应用服务器集成**:Quartz 可以在应用服务器或者 Servlet 容器中实例化,并且能够参与 XA 事务。 - **远程调用支持**:Quartz 能够以独立的方式运行(在它自己的 Java 虚拟机中),并通过 RMI 使用。 - **集群部署**:Quartz 可以被实例化为独立程序的集群(具备负载均衡和容错能力)。 - **任务调度**: - **触发机制**:任务通过触发器(Trigger)进行调度。触发器可以按照各种复杂的组合规则创建,包括但不限于特定时间点、特定日期、循环次数等。 - **任务分组**:“任务”由创建者给定名字,并且可以加入到给定名称的“任务组”中。 - **触发器管理**:触发器同样可以被给定名字和分组,以便于管理和调度。 - **任务执行**: - **任务定义**:任务是任何实现了简单 `Job` 接口的 Java 类,开发者可以根据需要自由定制任务的具体逻辑。 - **实例化方式**:任务类的实例可以由 Quartz 实例化,也可以由程序框架实例化。 - **监听机制**:当触发器被触发时,日程管理器会通知实现了 `JobListener` 或 `TriggerListener` 的对象。这些监听器在任务执行前后都会接收到通知。 - **结果反馈**:任务完成后,会返回一个“任务完成码(JobCompletionCode)”,以指示任务执行的结果是成功还是失败。这有助于日程管理器根据结果采取进一步行动。 - **任务持久化**: - **持久化机制**:Quartz 设计中包括了一个 `JobStore` 接口,用于存储 Jobs 和 Triggers。具体实现可以多样化。 - **数据库存储**:通过使用 `JDBCJobStore`,所有 Jobs 和 Triggers 被配置为“非易失性”的方式存储在关系数据库中。 - **内存存储**:通过使用 `RAMJobStore`,所有 Jobs 和 Triggers 被存储在 RAM 中,无需外部数据库支持。 - **事务支持**: - **参与 JTA 事务**:Quartz 通过 `JobStoreCMT`(`JDBCJobStore` 的子类)支持参与 JTA 事务。 - **事务管理**:Quartz 还可以直接管理 JTA 事务,如开始或提交事务。 - **集群特性**: - **容错**:Quartz 支持集群部署中的容错机制,以确保任务执行的连续性和可靠性。 - **负载均衡**:Quartz 在集群环境中还支持负载均衡,以分散任务执行的压力。 - **监听器及插件**: - **监听器机制**:应用可以通过实现一个或多个监听器接口来实现捕捉日程事件,以监视或控制任务/触发器的行为。 - **插件扩展**:Quartz 通过插件机制支持功能扩展,例如记录任务执行历史的日志,或者从文件中载入任务和触发器的定义。 - **内置组件**:Quartz 自带了一些“工厂构建”的插件和监听器,方便开发者使用。 #### 二、使用 Quartz 的常见问题解答 - **一般问题**: - **Quartz 是什么**:Quartz 是一个任务日程管理系统,用于调度和管理定时任务。 - **为什么不使用 java.util.Timer**:相比于 `java.util.Timer`,Quartz 提供了更强大的调度功能、集群支持以及事务处理能力。 - **如何构建 Quartz 源码**:通常涉及设置正确的构建环境、下载源码并执行构建脚本等步骤。 - **杂项问题**: - **Quartz 可以运行多少任务**:理论上没有限制,实际数量取决于硬件资源和配置。 - **通过 RMI 使用 Quartz 存在的问题**:可能会遇到网络延迟或安全性等问题。 - **关于 Jobs 的问题**: - **控制 Jobs 的实例化**:可以通过 `JobFactory` 控制 Jobs 的实例化过程。 - **避免任务执行后被移除**:通过设置 `JobDetail` 的持久化属性来防止任务执行后被自动删除。 - **避免 Job 并发激活**:使用 `DisallowConcurrentExecution` 注解或其他方法来控制并发执行。 - **如何停止正在执行的任务**:可以通过 `JobExecutionContext` 中的 `JobInterruptException` 来中断正在执行的任务。 - **关于触发器的问题**: - **串行任务执行**:通过使用 `SimpleTrigger` 并设置合适的重复策略来实现串行执行。 - **触发器未被触发的原因**:检查触发器的状态、时间设置是否正确,以及是否有其他触发器冲突。 - **夏令时的影响**:夏令时变化可能会影响触发器的实际触发时间,需注意时区配置。 - **关于 JDBCJobStore 的问题**: - **提高 JDBC-JobStore 性能**:优化数据库配置、减少查询次数等方法可以提高性能。 - **DB 连接问题**:确保数据库连接池配置正确,以及异常处理机制完善。 #### 三、总结 Quartz 作为一个强大的任务日程管理系统,提供了丰富的特性和功能,不仅支持复杂的任务调度需求,还具备良好的扩展性和集群支持。对于需要实现定时任务的应用而言,Quartz 是一个非常优秀的工具选择。通过深入理解其核心概念和技术细节,开发者可以充分利用其强大功能,满足不同场景下的任务调度需求。
剩余33页未读,继续阅读
- wuhaiyuan2012-12-20项目需要 正合适 下载咯
- 姓氏弓长张2013-01-30清晰度不是很高,但是介绍很明白
- 人可月生平2012-12-23项目需要 正合适 下载咯 .
- 粉丝: 3
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 自己写的一个很小的工具,用于替换文件的扩展名 文件扩展名匹配的才会被替换,如果不指定原始扩展名,将修改所有文件的扩展名为新扩展名 如果新扩展名为空,则替换后文件将没有扩展名
- nginx整合lua脚本demo
- 欧标TYPE 2桩端充电枪
- (22782460)单片机设计(详细教程MSP430.zip
- UE-ORCA.zip
- (11696858)条形码生成打印
- 个人使用资源,请勿下载使用
- (180014056)pycairo-1.21.0-cp37-cp37m-win-amd64.whl.rar
- (3268844)3G无线基本知识.pdf
- 捷米特JM-PN-EIP(Profinet转Ethernet-IP)应用案例.docx