本文叙述如何使用Quartz框架进行任务调度,框架结构,Cron语法以及部分常用API的描述等。
1 关于Quartz
Quartz 是一个功能齐全的、开源的job时间调度系统,它是可以被结合的,或者伴随虚拟的任何J2EE或J2SE程序-从最小的独立的应用程序到最大的e-commerce系统被使用。Quartz可以用来创建简单或复杂的时间调度来执行十、百、千、甚至上万的jobs;获得的job被定义为一个标准的java组件或EJBs. 这个Quartz 时间调度包含很多企业类的特征,例如JTA事务和簇。
本文档基于Quartz目前的最新版本quartz-1.6.0.jar来编写和测试的,主要讲述如何使用Quartz进行计划任务的简单调度以及如何编写cron,让Quartz执行高级的调度功能。
2 Quartz快速入门
2.1 Quartz运行机制简介
在使用Quartz进行任务调度时,主要用到三个对象:JobDetail(任务对象)、Trigger(触发器对象)、Scheduler(调度器对象)。在例子开始之前,我们需要对这三个对象有一个简要的了解。
JobDetail任务对象:其一般构造函数需要name、group、class三个参数。Name为此任务在调度器中的名称,group为此任务在调度器中的组名,class为此任务所对应的任务类。此任务类需要继承Job类,并实现execute(JobExecutionContext context)方法,当调度器运行到这个任务时,将直接调用并执行指定类的execute(JobExecutionContext context)方法。
Trigger触发器对象:Quartz中定义了两种Trigger(即:SimpleTrigger和CronTrigger),SimpleTrigger可以进行简单的调度规则配置,而CronTrigger支持复杂的调度规则配置。为了快速入门,在本例中,我们使用SimpleTrigger来进行调度配置。CronTrigger的配置语法及规则将在后面的章节中加以介绍。
Scheduler调度器对象:由调度器工厂SchedulerFactory生成,我们使用它来将JobDetail和Trigger注册到一起,从而使JobDetail按Trigger定制的规则运行。
总之,JobDetail定制任务,Trigger定制规则,Scheduler是容器,将二者注册到一起,以达到任务调度的目的。
2.2 HelloWorld例子
2.2.1 业务描述
下面就让我们一起来做一个HelloWorld的例子吧,我们将定义一个HelloJob的类作为我们的Job类,HelloWorld则是我们的main类,并定义从当前时间开始每2秒执行一次HelloJob,执行一百次后结束任务。具体程序如下:
2.2.2 编码实现
HelloJob.java
package com.newland.quartz.sample1;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* Job类,实现输出Hello-当前时间
*
* @author Chen.Feng(Kevin)<br>
* mail:chenfengcn@yeah.net<br>
* qq:67758633
*
*/
public class HelloJob implements Job {
public void execute(JobExecutionContext context)
throws JobExecutionException {
// 输出Hello World-当前时间
System.out.println("Hello World! - " + new Date());
}
}
HelloWorld.java
package com.newland.quartz.sample1;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
/**
* 使用Quartz设置每两秒执行一次HelloJob,共执行一百次
*
* @author Chen.Feng(Kevin)<br>
* mail:chenfengcn@yeah.net<br>
* qq:67758633
*
*/
public class HelloWorld {
public static void main(String[] args) {
try {
//通过SchedulerFactory获取一个调度器实例
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
//创建一个JobDetail实现,并指定此JobDetail的任务类
JobDetail job = new JobDetail("job1", "group1", HelloJob.class);
//通过SimpleTrigger定义调度规则:马上启动,每2秒运行一次,共运行100次
SimpleTrigger trigger = new SimpleTrigger("trigger1", "group1");
trigger.setStartTime(new Date());
trigger.setRepeatInterval(2000);
trigger.setRepeatCount(100);
//注册调度规则SimpleTrigger与JobDetail绑定关系
sched.scheduleJob(job, trigger);
//启动调度
sched.start();
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注:在程序运行之前,需要将Quartz所需要使用到的包加入到相应的工程位置中去。主要包括以下几个包。
- 大小: 19 KB
- 大小: 29.2 KB
分享到:
相关推荐
《.NET Quartz 任务调度平台源码解析与应用》 .NET Quartz 是一款强大的任务调度框架,它为.NET开发者提供了一种高效、灵活的方式来安排和执行周期性任务。Quartz.NET 是开源项目Quartz的.NET版本,它允许开发人员...
Quartz任务调度器是一款强大的开源任务调度框架,广泛应用于Java应用程序中,用于自动化定时任务的执行。它提供了灵活的任务调度机制,使得开发者可以方便地定义、安排和执行各种任务。在与Spring框架整合后,Quartz...
**C#基于Quartz任务调度系统** 在软件开发中,任务调度是一项重要的功能,它允许开发者安排任务在特定时间执行,比如数据同步、定时备份、报告生成等。Quartz是一款强大的开源任务调度库,广泛应用于Java和.NET生态...
Quartz任务调度是一款开源的Java定时任务框架,广泛应用于企业级应用系统中,用于执行周期性的后台任务。这款工具提供了一种灵活的方式来安排和管理任务,使得开发者无需在业务代码中处理时间相关的逻辑,而是通过...
本“quartz任务调度框架简单实用小demo”旨在帮助开发者快速理解和应用Quartz。 1. **Quartz基本概念** - **Job**: 任务的基本单元,代表一个需要执行的工作。 - **Trigger**: 触发器,决定Job何时被执行。 - **...
### Quartz任务调度管理 #### 一、任务调度基础概念 任务调度是指系统按照预先设定的时间规则来自动执行特定任务的功能。这种机制广泛应用于各种场景,例如数据备份、定期检查资源状态、发送邮件通知等。 ##### ...
基于Spring Boot的Quartz任务调度系统 项目概述 本项目是一个基于Spring Boot和Quartz的任务调度系统,旨在提供灵活的任务管理和调度功能。系统支持多种任务类型,包括Cron表达式任务和单次时间任务,并提供了丰富...
里面包含了两个工程项目: 1.Java project工程(含jar包,JDK1.6)。 是spring+quartz的任务调度实例。 2.Java web工程(含jar包,JDK1.7)。 spring+mybatis+quartz任务调度实例
本项目"spring+quartz任务调度代码版"显然是一个结合了这两者的实践案例,旨在展示如何在Spring环境下集成和使用Quartz进行任务调度。 Spring框架是一个开源的应用框架,它提供了丰富的功能,包括依赖注入、AOP...
标题“Spring quartz任务调度”指的是在Java开发中利用Spring框架集成Quartz库来实现应用程序的任务调度功能。Quartz是一款开源的作业调度框架,它允许开发者安排任务在特定时间执行,而Spring框架则提供了与Quartz...
Quartz任务调度--详细教程,讲的非常详细
Spring框架作为一个全面的企业级应用开发解决方案,提供了强大的任务调度支持,而Quartz则是一个流行的开源作业调度库,能够与Spring很好地集成。现在,我们就来深入探讨"spring quartz 任务调度"这一主题。 首先,...
Quartz任务调度框架教程中文版 chm格式
**Spring Quartz 任务调度** Spring Quartz 是一个基于 Java 的任务调度框架,它允许开发者定义定时任务并在应用程序中灵活地调度这些任务。这个框架是 Spring 和 Quartz Scheduler 的集成,提供了与 Spring 框架的...
总的来说,这个 Quartz 任务调度的运行示例为你提供了一个动手实践的机会,加深对 Quartz 工作原理的理解。通过学习和应用这个示例,你将能够自如地在 Java 应用程序中实现复杂的定时任务调度。
本篇将通过一个简单的Quartz任务调度实例,来深入理解其核心概念和用法。 首先,我们需要了解Quartz的主要组件: 1. **Job**:工作接口,代表一个具体的任务,实现`org.quartz.Job`接口,定义了`execute...
Quartz任务调度是一种广泛使用的开源任务调度框架,它允许开发者创建、调度和管理定时任务。初学者通过学习Quartz,可以提升其编程技能,尤其是在Java应用程序中实现复杂定时任务的能力。 1. **Quartz框架**: - ...
### Quartz任务调度快速入门知识点详解 #### 一、Quartz框架简介 Quartz是一个功能强大的开源作业调度框架,被广泛应用于Java应用中实现任务的定时调度。Quartz通过对任务调度领域的核心问题进行高度抽象,提炼出...
Quartz任务调度框架是Java开发中的一个强大工具,用于在应用程序中实现定时任务的自动执行。它是一个开源的作业调度库,可以与Java应用程序无缝集成,允许开发人员定义和调度复杂的作业执行计划。Quartz提供了丰富的...