`
magicmind
  • 浏览: 75205 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

调度框架Quartz快速入门

    博客分类:
  • java
阅读更多

    Quartz是功能非常强大的任务调度框架,下面用一个小例子说明如何使用。

    首先去Quartz官网下载http://www.opensymphony.com/quartz/ ,目前最新的版本式1.6.2,本文中使用的是1.6.1。把压缩包解压到本地,里面包含了quartz本身,文档,源代码和依赖的类包等。

eclipse中新建一个java工程,把quartzjar文件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次,

再把我们创建的JobDetailSimpleTrigger注册到shcduler:

scheduler.scheduleJob(initjob, trig)

调用start()方法启动schduler,前面写好的任务就按照我们的设定开始执行了。

SimpleTrigger可以为我们完成一些简单的调度功能,可是我们有时需要一些更复杂的调度,比如每月的某天允许,或每周几运行等等。Quartz也提供了一个完成这样复杂调度的triggerCronTriggerCronTrigger的功能非常强大,通过时间表达式可以完成很多复杂的调度,它的表达式和Linux下的cron一样。使用CronTrigger

CronTrigger jobTrigger = new CronTrigger("onlineTrigger", "triggerGroup");

CronExpression cexp = new CronExpression(0/5 * * * * ?);

jobTrigger.setCronExpression(cexp); 

需要注意的一点是,与使用Thread来实现定时调度不同的是,quartzjob既不需要继承Thread,也不需要实现Runnable接口,Job每次执行都是一个新的实例。

上面的例子代码显示,Job是被Scheduler调度运行的,那如果需要传递参数给Job,好像就没办法实现了,其实quartz给我们提供了一种给Job传递参数的办法,通过JobDetailDataMap,在主类中把要传递的数据放入DataMap中,比如我们要把一个参数类Config传递给Job

initjob.getJobDataMap().put("CONFIG", config);

Job获取传递的数据:

Config cfg = (Config)ctx.getJobDetail().getJobDataMap().get("CONFIG");

分享到:
评论

相关推荐

    分布式调度框架quartz从入门到精通

    分布式调度框架Quartz是OpenSymphony开源组织推出的一款强大的任务调度工具,专为Java平台设计。Quartz可以方便地与其他J2EE或J2SE应用结合,也可以单独使用。它支持创建复杂的工作流,能够处理从简单到成千上万个...

    Quartz框架快速入门

    Quartz是一个开源的作业调度框架,用于开发Java应用程序。它提供了强大的触发器(Trigger)机制用于关联作业(Job),同时还具备灵活的表达式用于配置定时任务。Quartz能够集成到任何Java应用中,无论是独立的或已...

    任务调度框架Quartz

    Quartz 任务调度框架 Quartz 是一个功能强大且灵活的任务调度框架,广泛应用于各种企业应用中,例如定时清理系统垃圾文件、定时导入导出数据、定时发送邮件等等业务场景。Quartz 提供了高度可控的任务调度功能,...

    JAVA定时调度框架-Quartz使用入门到精通.doc

    Quartz 是一个强大的开源作业调度框架,专为 Java 平台设计,无论是 J2SE 还是 J2EE 应用都可以使用。它的主要目的是提供一个简单易用但功能丰富的任务调度解决方案。Quartz 具备数据库支持、集群功能、插件机制、...

    Quartz 框架快速入门

    Quartz 框架快速入门 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler

    Quartz框架快速入门.pdf

    Quartz框架是一款强大的开源任务调度库,广泛应用于Java环境下的定时任务管理。要开始使用Quartz,首先需要在项目中引入必要的依赖。基础依赖是quartz-<version>.jar,这是Quartz的核心库。除此之外,根据你的需求,...

    Quartz_框架快速入门

    Quartz 是一个强大的、开放源代码的作业调度框架,用于在 Java 应用程序中安排任务。它的主要作用是允许程序员或系统管理员定义任务(Job),并设定这些任务在特定的时间点或按照特定的周期运行。本文将引导您快速...

    Quartz定时器从入门到进阶

    Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...

    Quartz任务调度快速入门

    Quartz是一个功能强大的开源作业调度框架,被广泛应用于Java应用中实现任务的定时调度。Quartz通过对任务调度领域的核心问题进行高度抽象,提炼出了三个核心概念:**调度器(Scheduler)**、**任务(Job)**和**...

    Java框架介绍Quartz从入门到进阶.pdf

    Quartz框架介绍和应用 Quartz是一个完全由Java编写的开源作业调度...Quartz框架是一个功能强大且灵活的作业调度框架,能够满足企业级的作业调度需求,开发者可以快速地创建和调度作业,提高工作效率和自动化处理能力。

    quartz实例,quartz入门例子

    Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行计划任务。这个实例是为初学者设计的,用于帮助理解Quartz的基本概念和使用方式。在MyEclipse 6.0.1环境下,你可以直接运行这个Spring整合Quartz的...

    任务调度Quartz框架

    【Quartz任务调度框架】 Quartz是一个开源的任务调度框架,专为Java应用程序设计,用于创建、管理和执行计划任务。在企业应用中,任务调度是非常常见且重要的需求,例如定期清理系统垃圾文件、定时导入导出数据、...

    Quartz中文入门教程

    Quartz中文入门教程 前言 Quartz让任务调度简单 Quartz的发展史 上手Quartz Quartz内部架构 作业 作业管理和存储 有效作业存储 作业和触发器 调度一个作业 用调度器(Scheduler)调用你的作业 编程调度...

    Quartz如何从入门到精通.pdf

    Quartz入门到精通 Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如...

    任务调度Quartz框 架

    Quartz是一个开源的任务调度框架,非常适合初学者入门。它为Java开发者提供了一种高效且可控的方式来实现定时任务的调度。在各种企业应用中,任务调度的需求非常常见,例如定期清理系统垃圾文件、定时导入导出数据、...

Global site tag (gtag.js) - Google Analytics