Quartz入门教程

Quartz是开源的做业调度框架,使你能在预约义的日期和时间运行任务。html

Quartz 1.6

Quartz是强大和先进的调度框架,帮助Java开发者在指定的日期和时间运行调度做业。
本教程教你使用Quartz 1.6.3开发调度做业。java

本示例有点过期,新版Quartz版本为 2.2.3。express

  1. 下载Quartz
    能够从官网上下载Quartz,或者从Maven中央仓库。
    pom.xml文件内容:
<dependencies>
    <!-- Quartz API -->
    <dependency>
        <groupId>opensymphony</groupId>
        <artifactId>quartz</artifactId>
        <version>1.6.3</version>
    </dependency>

    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
</dependencies>
  1. Quartz做业
    Quartz做业定义了你要运行什么任务。
    HelloJob.java文件
public class HelloJob implements Job {
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("Hello Quartz!");
    }
}
  1. Quartz触发器
    Quartz触发器定义了Quartz什么时候执行你上面定义的的Quartz做业。
    有两种类型的Quartz触发器:
    SimpleTrigger - 能够设置开始时间、结束时间和重复间隔。
    CronTrigger - 能够使用Unix cron表达式指定日期和时间执行定义的工做。
    Unix cron表达式:
    Unix cron表达式具备高灵活性且功能强大,能够经过如下网址学习cron表达式。
    http://en.wikipedia.org/wiki/CRON_expression
    http://www.quartz-scheduler.org/docs/examples/Example3.html
    SimpleTrigger - 每3秒执行一次
SimpleTrigger trigger = new SimpleTrigger();
trigger.setName("dummyTriggerName");
trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
trigger.setRepeatInterval(3000);

CronTrigger - 每3秒执行一次框架

CronTrigger trigger = new CronTrigger();
trigger.setName("dummyTriggerName");
trigger.setCronExpression("0/3 * * * * ?");
  1. 调度器
    调度器类把Job(做业)和Trigger(触发器)链接在一块儿并执行。
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
  1. 完整代码
    这里有两个使用Quartz完整例子,分别使用了SimpleTrigger和CronTrigger。
    SimpleTrigger实例
    每3秒执行一次,延时1秒
public class SimpleTriggerExample {
    public static void main(String[] args) throws SchedulerException {
        JobDetail job = new JobDetail();
        job.setName("dummyJobName");
        job.setJobClass(HelloJob.class);

        // configure the scheduler time
        SimpleTrigger trigger = new SimpleTrigger();
        trigger.setName("dummyTriggerName");
        trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
        trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
        trigger.setRepeatInterval(3000);

        // schedule it
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);
    }
}

CronTrigger实例学习

public class CronTriggerExample {
    public static void main(String[] args) throws SchedulerException, ParseException {
        JobDetail job = new JobDetail();
        job.setName("dummyJobName");
        job.setJobClass(HelloJob.class);

        // configure the scheduler time
        CronTrigger trigger = new CronTrigger();
        trigger.setName("dummyTriggerName");
        trigger.setCronExpression("0/3 * * * * ?");

        // schedule it
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);
    }
}

Quartz 2

JobListener -- 建立监听类以跟踪正在运行的工做状态

Multiple Jobs -- 声明和运行多个工做

List All Jobs -- 列举全部存在的工做

Trigger A Quartz Job Manually -- JSF2示例,显示全部工做并手动触发特定的工做

相关文章
相关标签/搜索