用Quartz进行作业调度

简介:Quartz 是个开放源码项目,提供了丰富的作业调度集。在这篇文章中 ,软件工程师 Michael Lipton 和 IT 架构师 Soobaek Jang 对 Quartz API 进行了介绍,从对框架的一 般概述开始,并以一系 列展示 Quart 基本特性的代码示例作为结束。在阅读完本文并看过代码示例后, 您应当能够把 Quartz 的基本特性应用到任何 Java 应用程序中。

现代的 Web 应用程序框架在范围和复杂性方面都有所发展,应用程序的每个 底层组件也必须相应地发 展。作业调度是现代系统中对 Java 应用程序的一般要求,而且也是对 Java 开 发人员一贯的要求。虽然 目前的调度技术比起原始的数据库触发器标志和独立的调度器线程来说,已经发 展了许多,但是作业调度 仍然不是个小问题。对这个问题最合适的解决方案就是来自 OpenSymphony 的 Quartz API。

Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供 了简单却强大的机制。 Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器 的多对多关系,还能把 多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事 件的作业,还可以为一个 事件组合多个作业。虽然可以通过属性文件(在属性文件中可以指定 JDBC 事务 的数据源、全局作业和/ 或触发器侦听器、插件、线程池,以及更多)配置 Quartz,但它根本没有与应用 程序服务器的上下文或 引用集成在一起。结果就是作业不能访问 Web 服务器的内部函数;例如,在使用 WebSphere 应用服务器 时,由 Quartz 调度的作业并不能影响服务器的动态缓存和数据源。

本文使用一系列代码示例介绍 Quartz API,演示它的机制,例如作业、触发 器、作业仓库和属性。

入门

要开始使用 Quartz,需要用 Quartz API 对项目进行配置。步骤如下:

下载 Quartz API。

解压缩并把 quartz-x.x.x.jar 放在项目文件夹内,或者把文件放在项目的类 路径中。

把 core 和/或 optional 文件夹中的 jar 文件放在项目的文件夹或项目的类 路径中。

如果使用 JDBCJobStore,把所有的 JDBC jar 文件放在项目的文件夹或项目 的类路径中。

为了方便读者,我已经把所有必要的文件,包括 DB2 JDBC 文件,编译到一个 zip 文件中。请参阅 下载 小节下载代码。

现在来看一下 Quartz API 的主要组件。

作业和触发器

Quartz 调度包的两个基本单元是作业和触发器。作业 是能够调度的可执行任 务,触发器 提供了对作 业的调度。虽然这两个实体很容易合在一起,但在 Quartz 中将它们分离开来是 有原因的,而且也很有益 处。

通过把要执行的工作与它的调度分开,Quartz 允许在不丢失作业本身或作业 的上下文的情况下,修改 调度触发器。而且,任何单个的作业都可以有多个触发器与其关联。

时间: 2024-09-28 21:09:39

用Quartz进行作业调度的相关文章

Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解

Quartz是一个基于Java的作业调度管理的轻量级框架,目前在很多企业应用中被使用,它的作用类似于java.util中的Timer和TimeTask.数据库中的job等,但Quartz的功能更强大.更灵活.从Quartz2开始,你可以使用POJO作为一个任务(Job),这种开发方式进一步降低了代码的耦合度,如果跟Spring进行整合,使用起来将更加方便简单. 整合开发需要使用的jar如下所示: 接下来写一个被调度的任务: 然后可以在web.xml配置Spring的ContextLoaderLi

Java的作业调度类库Quartz基本使用指南_java

一.常用接口:1.Job接口:该接口只有一个方法 void execute(JobExecutionContext context) 开发者实现该接口定义需要执行的任务.JobExecutionContext类提供调度上下文的各种信息 2.JobDetail:用于描叙Job实现类及其他的一些静态信息 3.Trigger:描叙触发Job执行的时间触发规则 4.Calendar:定义了一个关联Trigger可能(或者不可能)触发的时间空间.它没有定义触发的真实时间,而是用在在普通的Schedule需

Quartz.NET实现作业调度

一.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中.它灵活而不复杂.你能够用它来为执行一个作业而创建简单的或复杂的作业调度.它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等. 通俗说它的功能是:比如说我想每天晚上2点让程序或网站执行某些代码,或者每隔5秒种我想查看是否有新的任务要处理等. 官网:http://

ABP后台服务之作业调度Quartz.NET

一.简介 Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲简单性. 你能够用它来为执行一个作业而创建简单的或复杂的调度. 它一些很好的特性:  1:支持集群,作业分组,作业远程管理.   2:自定义精细的时间触发器,使用简单,作业和触发分离.  3:数据库支持,可以寄宿Windows服务,WebSite,winform等.  合适场景: 间隔时间

.net下作业调度实战[quartz]

在我们处理各类信息系统的业务时,定时的调度问题会经常的涉及,quartz是java社区一个很成熟的解决方案,.net也有对应的开源实现,具体为:http://quartznet.sourceforge.net/ 不过这个版本对vs2010和64的支持不好,今天抽了一些时间对以前的这些部分进行了升级,整理了一个初步的通用的方案. 具体的结构图如下: 客户端 RemoteDemo <quartz>     <add key="quartz.scheduler.proxy"

ASP.NET使用Quartz.NET实现定时任务调度

第一步:下载Quartz.NET类库源码 下载地址:http://www.quartz-scheduler.net/ 第二步:程序集成: 1.修改网站根目录下的web.config文件,在configuration节增加:   <configSections>     <!--定时任务调度配置-->     <section name="quartz" type="System.Configuration.NameValueSectionHand

Quartz入门

    Quartz是一个完全由Java编写的开源作业调度框架,当你想实现定时做些事情的时候,它就派上用场啦!目前Quartz比较稳定的版本是2.2.1,所以我这里就以这个版本为例,如果你使用Quartz2.x系列,那你的spring版本必须3.1版本及以上(假如你需要将Quartz跟Spring整合的话),Quartz并不一定需要跟Spring整合哈,它完全可以脱离Spring单独工作,只是Spring目前太流行,所以大家都喜欢将其他框架往Spring里整合.       下面是Quartz的

spring boot + quartz 集群

  spring boot bean配置: @Configurationpublic class QuartzConfig {                @Value("${quartz.scheduler.instanceName}")        private String quartzInstanceName;                @Value("${org.quartz.dataSource.myDS.driver}")        pr

配置-关于spring和quartz集成爆NoClassDefFoundError的问题,描述详细

问题描述 关于spring和quartz集成爆NoClassDefFoundError的问题,描述详细 首先报错信息 严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener java.lang.NoClassDefFoundError: com/gc/monitor/exception/Mo