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示例,顯示全部工做並手動觸發特定的工做

相關文章
相關標籤/搜索