Quartz是功能非常强大的任务调度框架,下面用一个小例子说明如何使用。
首先去Quartz官网下载http://www.opensymphony.com/quartz/ ,目前最新的版本式1.6.2,本文中使用的是1.6.1。把压缩包解压到本地,里面包含了quartz本身,文档,源代码和依赖的类包等。
在eclipse中新建一个java工程,把quartz的jar文件quartz-1.6.1.jar加入构建路径,同时quartz运行至少还需要另外两个类包:commons-collections-3.2.jar 和 commons-logging-1.1.jar,这两个文件可以在lib/core目录下找到。
下面我们就可以开始编写类体验quartz的强大功能了。下面以一个简单的定时输出小任务为例,这个任务很简单,就是每隔一段时间输出一句话。
首先编写类PrintoutJob实现一个简单的输出任务。在Quartz框架里运行的任务叫做job,这个类需要实现Job接口,
public class PrintoutJob implements Job {
@Override
public void execute(JobExecutionContext ctx) throws JobExecutionException{
System.out.println("do task...");
}
}
任务现在已经有了,还需要一个让它运行起来的调度器—Scheduler。再新建一个类JobRunner:
public class JobRunner {
public static void main(String[] args) {
Scheduler scheduler = null;
SchedulerFactory schFactory = new StdSchedulerFactory();
try {
scheduler = schFactory.getScheduler();
JobDetail initjob = new JobDetail("printjob", "jobGroup", PrintoutJob.class);
SimpleTrigger trig = new SimpleTrigger("trigger1", "jobGroup");
Date runTime = TriggerUtils.getEvenSecondDate(new Date());
trig.setStartTime(runTime);
trig.setRepeatInterval(3000);
trig.setRepeatCount(10);
scheduler.scheduleJob(initjob, trig);
scheduler.start();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
要让Scheduler按照你的意图去调度自己的job,还需要告诉Schduler关于这个job的一些详细信息,job的详细信息保存在一个JobDetail的实例中,
new JobDetail("printjob", "jobGroup", PrintoutJob.class);
表示这个job的名字叫“printjob”,属于“jobGroup”线程组,job的实现类是PrintoutJob。有了job的详细信息,还要告诉调度器scheduler如何去做调度,即在什么时间,按照什么频率去执行job,提供这个信息的是一个trigger,我们先创建一个简单类型的trigger—SimpleTrigger,下面给trigger设置属性:
trig.setStartTime(runTime)——设置job开始运行的时间,这里是立刻开始,
trig.setRepeatInterval(3000)——设置运行间隔时间是3000毫秒即3秒,
trig.setRepeatCount(10)——设置job一共执行10次,
再把我们创建的JobDetail和SimpleTrigger注册到shcduler:
scheduler.scheduleJob(initjob, trig)
调用start()方法启动schduler,前面写好的任务就按照我们的设定开始执行了。
SimpleTrigger可以为我们完成一些简单的调度功能,可是我们有时需要一些更复杂的调度,比如每月的某天允许,或每周几运行等等。Quartz也提供了一个完成这样复杂调度的trigger-CronTrigger,CronTrigger的功能非常强大,通过时间表达式可以完成很多复杂的调度,它的表达式和Linux下的cron一样。使用CronTrigger:
CronTrigger jobTrigger = new CronTrigger("onlineTrigger", "triggerGroup");
CronExpression cexp = new CronExpression(“0/5 * * * * ?”);
jobTrigger.setCronExpression(cexp);
需要注意的一点是,与使用Thread来实现定时调度不同的是,quartz的job既不需要继承Thread,也不需要实现Runnable接口,Job每次执行都是一个新的实例。
上面的例子代码显示,Job是被Scheduler调度运行的,那如果需要传递参数给Job,好像就没办法实现了,其实quartz给我们提供了一种给Job传递参数的办法,通过JobDetail的DataMap,在主类中把要传递的数据放入DataMap中,比如我们要把一个参数类Config传递给Job:
initjob.getJobDataMap().put("CONFIG", config);
Job获取传递的数据:
Config cfg = (Config)ctx.getJobDetail().getJobDataMap().get("CONFIG");
分享到:
相关推荐
分布式调度框架Quartz是OpenSymphony开源组织推出的一款强大的任务调度工具,专为Java平台设计。Quartz可以方便地与其他J2EE或J2SE应用结合,也可以单独使用。它支持创建复杂的工作流,能够处理从简单到成千上万个...
Quartz是一个开源的作业调度框架,用于开发Java应用程序。它提供了强大的触发器(Trigger)机制用于关联作业(Job),同时还具备灵活的表达式用于配置定时任务。Quartz能够集成到任何Java应用中,无论是独立的或已...
Quartz 任务调度框架 Quartz 是一个功能强大且灵活的任务调度框架,广泛应用于各种企业应用中,例如定时清理系统垃圾文件、定时导入导出数据、定时发送邮件等等业务场景。Quartz 提供了高度可控的任务调度功能,...
Quartz 是一个强大的开源作业调度框架,专为 Java 平台设计,无论是 J2SE 还是 J2EE 应用都可以使用。它的主要目的是提供一个简单易用但功能丰富的任务调度解决方案。Quartz 具备数据库支持、集群功能、插件机制、...
Quartz 框架快速入门 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler
Quartz框架是一款强大的开源任务调度库,广泛应用于Java环境下的定时任务管理。要开始使用Quartz,首先需要在项目中引入必要的依赖。基础依赖是quartz-<version>.jar,这是Quartz的核心库。除此之外,根据你的需求,...
Quartz 是一个强大的、开放源代码的作业调度框架,用于在 Java 应用程序中安排任务。它的主要作用是允许程序员或系统管理员定义任务(Job),并设定这些任务在特定的时间点或按照特定的周期运行。本文将引导您快速...
Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...
Quartz是一个功能强大的开源作业调度框架,被广泛应用于Java应用中实现任务的定时调度。Quartz通过对任务调度领域的核心问题进行高度抽象,提炼出了三个核心概念:**调度器(Scheduler)**、**任务(Job)**和**...
Quartz框架介绍和应用 Quartz是一个完全由Java编写的开源作业调度...Quartz框架是一个功能强大且灵活的作业调度框架,能够满足企业级的作业调度需求,开发者可以快速地创建和调度作业,提高工作效率和自动化处理能力。
Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行计划任务。这个实例是为初学者设计的,用于帮助理解Quartz的基本概念和使用方式。在MyEclipse 6.0.1环境下,你可以直接运行这个Spring整合Quartz的...
【Quartz任务调度框架】 Quartz是一个开源的任务调度框架,专为Java应用程序设计,用于创建、管理和执行计划任务。在企业应用中,任务调度是非常常见且重要的需求,例如定期清理系统垃圾文件、定时导入导出数据、...
Quartz中文入门教程 前言 Quartz让任务调度简单 Quartz的发展史 上手Quartz Quartz内部架构 作业 作业管理和存储 有效作业存储 作业和触发器 调度一个作业 用调度器(Scheduler)调用你的作业 编程调度...
Quartz入门到精通 Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如...
Quartz是一个开源的任务调度框架,非常适合初学者入门。它为Java开发者提供了一种高效且可控的方式来实现定时任务的调度。在各种企业应用中,任务调度的需求非常常见,例如定期清理系统垃圾文件、定时导入导出数据、...