1.是什么?
- 是java开发的开源作业调度框架
- 可以与java应用结合使用也可以独立部署
- 能够支持成千上万简单或复杂的定时任务
- 支持许多企业级功能,如JTA
2.解决了什么?
如果应用程序具有需要在给定时刻发生的任务,或者您的系统具有定期维护工作,那么Quartz可能是您理想的解决方案。
3.与Spring定时任务比较
Basically, Spring Scheduler (Spring 3.0+) is a truly light weight implementation that will suffice for simple scheduling needs and, it provides annotation support for both Task Scheduling and Asynchronous method execution. It provides support for fixed rate & delay and cron based scheduling. But, Quartz provides support for enterprise level features like JTA and clustering; it comes with JobPersistence (JDBC & RAM stores) which can be used for Fail-safe & Load Balancing purposes.
来自:https://stackoverflow.com/questions/4385719/spring-scheduling-scheduled-vs-quartz
3.运行时环境
- Quartz可以嵌入另一个独立的应用程序中
- Quartz可以在应用程序服务器(或servlet容器)中实例化,并参与XA事务
- Quartz可以作为独立程序运行(在自己的Java虚拟机中),通过RMI使用
- Quartz可以实例化为一组独立程序(具有负载平衡和故障转移功能),用于执行作业
4.提供了哪些定时任务?
- 在一天/周/月/年的某个时间
- 日历中的指定时间
- 重复指定次数
- 重复直到一定次数/日期
- 无限期地重复
- 以一定的延迟间隔执行
5.Job执行
- jobs只需要实现简单Job接口
- job类能够被Quarz或者应用程序框架实化
- 当Trigger被触货发或执行完成,实现了JobListener and TriggerListener接口的监听器将执行。
- job完成之后,返回JobCompletionCode表示成功或失败,可能指定相应的行动。
6.持久化
- quartz的设计包括一个JobStore接口,可以实现该接口以提供各种存储作业的机制
- JDBCJobStore:所有jobs和triggers都存储在数据库
- RAMJobStore:所有数据存储在内存
7.事务支持
- JobStoreCMT(JDBCJobStore的子类)参与JTA事务。
- quartz可以围绕job执行JTA事务
8.集群支持
- Fail-over
- 负载均衡
- 内置集群依赖JDBCJobStore
- Terracotta扩展支持了集群功能,无须数据库(可能failover时可能会造成JobDataMap中的计数无法记录,导致重复执行)
网友评论