zoukankan      html  css  js  c++  java
  • quartz使用(一)

    在项目中经常会碰到定时任务,quartz是一款非常优秀的开源框架, 提供了定时任务的支持,还支持任务的持久化,并且提供了对数据库的支持。下面首先对quartz做一个简单介绍,并附上一个小例子。

    1、下面是quartz的官网:

    http://www.quartz-scheduler.org//,打开网址我们可以看到quartz最新的版本是2.2.3这里我也以此版本作为例子的环境。quartz从2.0版本其做了很大的改变,具体的变化可以自己查阅相关资料,在此不赘述。

    2、我这里下载的是quartz-2.2.3-distribution.tar.gz,用解压缩工具解压出来得到如下图的文件目录结构,

    docs:quartz的文档信息,包含了和数据库相关的建表sql;

    examples:例子;

    javadoc:使用java的doc,可以使用jd2chm工具转化为chm格式的文档;

    lib:quartz的jar包,包含了使用quartz的所有包(依赖包和quartz的jar包);

    licenses:许可文件;

    src:quartz的源码;

    3、从lib包里我们可以看到quartz的日志系统使用的是slf4j,但是其真正的日志系统是log4j,具体的日志框架描述,可以参看我别的文章。

    4、quartz即可以用在java工程中,也可以用在javaweb项目中,这里以javaweb项目为环境做例子。

    5、把quartz文件夹下的lib文件夹里的所有jar包放到项目的lib目录下。

    6、经过上面的步骤就把quartz引入到了工程中。

    下面是具体的例子的说明及代码:

    一、首先,要创建一个任务,quartz规定任务必须实现org.quarta.Job接口,此接口就一个方法execute,这个方法就是任务执行的时候允许的方法,具体的业务实现在这个方法里,我这里只进行了简单的打印,

     1 package com.cn.myScheduler;
     2 
     3 import org.quartz.Job;
     4 import org.quartz.JobExecutionContext;
     5 import org.quartz.JobExecutionException;
     6 public class MyJob implements Job {
     7     @Override
     8     public void execute(JobExecutionContext arg0) throws JobExecutionException {
     9         // TODO Auto-generated method stub
    10         System.out.println("this is my first scheduler!");
    11     }
    12 
    13 }

    二、创建完任务之后,我们还要创建一个包含任务信息的jobDetail,一个管理任务执行的促发器trigger,最后就是调度任务,

     1 package com.cn.myScheduler;
     2 
     3 import org.quartz.JobBuilder;
     4 import org.quartz.JobDetail;
     5 import org.quartz.Scheduler;
     6 import org.quartz.SchedulerException;
     7 import org.quartz.SchedulerFactory;
     8 import org.quartz.SimpleScheduleBuilder;
     9 import org.quartz.Trigger;
    10 import org.quartz.TriggerBuilder;
    11 import org.quartz.impl.StdSchedulerFactory;
    12 public class TestMyJob {
    13     public static void main(String[] args) {
    14         // TODO Auto-generated method stub
    15         try{
    16         //1、获得一个scheduler
    17         SchedulerFactory sf=new StdSchedulerFactory();
    18         Scheduler scheduler =sf.getScheduler();
    19         //2、获得一个jobDetail
    20         JobDetail job = JobBuilder.newJob(MyJob.class)
    21                  .withIdentity("myJob")
    22                  .build();
    23 
    24         //3、获得一个trigger
    25          Trigger trigger = TriggerBuilder.newTrigger()
    26                   .withIdentity("trigger1", "group1")
    27                   .startNow()
    28                   .withSchedule(SimpleScheduleBuilder.simpleSchedule()
    29                           .withIntervalInSeconds(40)
    30                           .withRepeatCount(10))
    31                          .build();
    32         //4、把任务和触发器放到scheduler中
    33         scheduler.scheduleJob(job, trigger);
    34         //5、开始任务调度
    35         scheduler.start();
    36         }
    37         catch(SchedulerException e){
    38             e.printStackTrace();
    39         }
    40     }
    41 
    42 }

    注释1:创建一个scheduler,scheduler负责所有任务的调度。

    注释2:创建一个包含任务信息的jobDetail,指定任务的实现类为MyJob.class,使用withIdentity方法指定任务名称,还可以用第二个参数指定任务的组名

    注释3:创建一个任务促发器,指定了促发器的名称“trigger1”和促发器的组名“group1”;设置了促发的时间为当前促发,且每隔40S执行一次,一共执行10次

    注释4:把jobDetail和trigger放到scheduler中

    注释5:启动scheduler

    运行程序可以看到程序的输出。

    以上就是一个简单的quartz定时任务。

    有关quartz的内容会持续更新!

    谢谢!

  • 相关阅读:
    编写一个脚本,用它来操纵QTP的运行
    URLbased 方式和 HTMLbased方式的差别(摘自关河)
    提供软件测试、软件开发相关服务
    数组内容的参数化问题
    IIS状态代码的含义
    不成熟的测试工具
    LR利用foxmail发邮件部分的脚本代码
    FTP的两种模式
    pop3的基本流程
    自动化测试在企业中的实施
  • 原文地址:https://www.cnblogs.com/teach/p/5675960.html
Copyright © 2011-2022 走看看