快速了解Quartz

2019-03-30 08:54|来源: 网路

Quartz是什么?

作业调度库

Quartz是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间运行。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数。

Quartz 是一种功能丰富的,开放源码的作业调度库,可以在几乎任何Java应用程序集成 - 从最小的独立的应用程序到规模最大电子商务系统。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数 -  作业被定义为标准的Java组件,可以执行几乎任何东西,可以编程让它们执行。 Quartz调度包括许多企业级功能,如JTA事务和集群支持。

Quartz 是可自由使用,使用Apache 2.0 license授权方式。

Quartz可以用来做什么?

如果应用程序需要在给定时间执行任务,或者如果系统有连续维护作业,那么Quartz是理想的解决方案。

使用Quartz作业调度应用的示例:

驱动处理工作流程:作为一个新的订单被初始化放置,调度作业到在正好两个小时内,它将检查订单的状态,如果订单确认消息尚未收到命令触发警告通知,以及改变订单的状态为“等待的干预”。

系统维护:调度工作给数据库的内容,每个工作日(节假日除外平日)在11:30 PM转储到一个XML文件中。

在应用程序内提供提醒服务。

运行环境

Quartz 可以运行嵌入在另一个独立式应用程序

Quartz 可以在应用程序服务器(或servlet容器)内被实例化,并且参与XA事务

Quartz 可以作为一个独立的程序运行(其自己的Java虚拟机内),可以通过RMI使用

Quartz 可以被实例化,作为独立的项目集群(负载平衡和故障转移功能),用于作业的执行

作业调度

作业被安排在一个给定的触发时运行。触发器可以使用以下指令的接近任何组合来创建:

    在一天中的某个时间(到毫秒)

    在一周的某几天

    在每月的某一天

    在一年中的某些日期

    不在注册的日历中列出的特定日期(如商业节假日除外)

    重复特定次数

    重复进行,直到一个特定的时间/日期

    无限重复

    重复的延迟时间间隔

作业是由其创建者赋予的名字,也可以组织成命名组。触发器也可以给予名称和放置在组中,以方便地将它们调度内组织。作业可以被添加到所述调度器一次,而是具有多个触发器注册。在企业Java环境中,作业可以执行自己的工作作为分布式(XA)事务的一部分。

作业执行

作业可以实现简单的作业接口,为作业执行工作的任何Java类。

Job类的实例可以通过Quartz被实例化,或者通过应用程序框架。

当触发时,调度通知实现JobListener和TriggerListener接口零个或多个Java对象(监听器可以是简单的Java对象,或EJB,JMS或发布者等)。这些监听器在作业已经执行之后通知。

由于作业完成后返回JobCompletionCode,它通知的成功或失败的调度。JobCompletionCode还可以指示的基础上,成功的话就采取行动调度/失败的代码 - 如立即重新执行作业。

作业持久性

1、Quartz的设计包括可被实现以提供的作业存储各种机制一个作业存储接口

2、通过使用包含的JDBCJobStore,所有的作业和触发器配置为“非挥发性”都存储在通过JDBC关系数据库。

3、通过使用包含的RAMJobStore,所有的作业和触发器存储在RAM,因此不计划执行仍然存在 - 但这是无需使用外部数据库的优势。

事务

1、可以参与JTA事务,通过使用JobStoreCMT(JDBCJobStore的子类)。

2、Quartz可以管理JTA事务(开始并提交它们)周围作业的执行,从而使作业执行的工作自动将JTA事务中发生。

集群

1、故障切换

2、负载均衡

3、Quartz的内置的群集功能,通过JDBCJobStore(如上所述)依靠数据库持久

4、Terracotta扩展Quartz提供集群功能,而不需要一个支持数据库

监听器和插件

应用程序可以捕捉事件的调度监控或通过实现一个或多个监听器接口控制工作/触发行为。

插件机制,可以用来添加功能,Quartz让作业执行过程中或工作负载和触发定义的历史不受限在一个文件中。

附带了一些“工厂建有”插件和监听器。


相关问答

更多
  • quartz的安装问题[2022-07-03]

    设置好环境变量假设你安装在C:\\Program Files\\jdk1.5.0_02 变量名:JAVA_HOME 变量值:C:\\Program Files\\Java\\j2sdk1.5.0 变量名:Path 变量值:C:\\Program Files\\Java\\j2sdk1.5.0\\bin 变量名:CLASSPATH 变量值:.;C:\\Program Files\\Java\\j2sdk1.5.0\\lib\\tools.jar;C:\\Program Files\\Java\\j2sdk1. ...
  • 意思是指 手表裏面的石英模块是由瑞士制造 希望能帮助你!
  • 什么是quartz?[2022-04-27]

    quartz是英文“石英”的意思,如果你的表上有这个单词,这只说明你的手表是电子石英脉冲手表。 quartz n. 1. 【矿】石英[U] a quartz watch 石英表
  • Quartz插件问题[2022-05-06]

    打/quartz 然后会出现这个插件的设置 然后有选项是关于目标的,上面有锁定这个项,把前面的勾去掉就可以移动目标的施法条的位置了,大小的调整就在下面,你能找到的,肯定没问题。 希望对你有帮助。
  • quartz怎么加载[2022-01-24]

    ESC 界面选项 然后你会看到有个插件的界面 在那个旁边 你仔细找找就能看到 从那里就可以调用了
  • 你很可能在你的类路径中有两个Quartz JAR副本 - JBoss有自己的副本,你的应用程序也可能在它的lib目录中有一个副本。 两人发生冲突。 从您的应用程序中删除JAR,然后重试。 You most likely have two copies of the Quartz JAR in your classpath - JBoss has its own copy, and your application probably has one too, in its lib directory. The ...
  • 这是一个类加载问题。 JBoss已经在其类路径中使用了org.quartz.spi.ClassLoadHelper.class ,因为JBoss将它用于不同任务的内部计时器。 JBoss提供的quartz.jar位于/jboss-as/common/lib/quartz.jar 。 因此,您正在为您的应用程序提供另一个quartz.jar ,这会导致与JBoss提供的现有石英类冲突。 要解决此问题,您有两种选择: 选项1 。 从你的耳朵中取出石英罐并加以战争。 在我看来,这是更好更容易的选择,除非由于某种原 ...
  • 通常这是垃圾收集器的工作(在作业完成后清理)。 当作业完成并且工作中没有更多的引用时,垃圾收集器应该清理。 我怀疑你要么在你的工作之外泄漏你的工作(例如将其传递给存储对你工作的引用的任何其他对象)。 或者你不清理你必须清理的资源(例如数据库连接或文件句柄)。 这会导致内存泄漏,您必须使用分析器跟踪并清理所需内容(通过不将对象泄漏到外部或关闭所有打开/创建的资源)。 Normally this is a job for the garbage collector (cleaning up after the ...
  • 我们已经将调度程序设置为我们应用程序中的单例,它为我们解决了问题: public class MyScheduler { static MyScheduler() { _schedulerFactory = new StdSchedulerFactory(getProperties()); _scheduler = _schedulerFactory.GetScheduler(); } public static IScheduler GetS ...