quartz整理(一)

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中的计数无法记录,导致重复执行)

你可能感兴趣的:(quartz整理(一))