Quartz入門教程


Quartz是開源的作業調度框架,使你能在預定義的日期和時間運行任務。

Quartz 1.6

Quartz是強大和先進的調度框架,幫助Java開發者在指定的日期和時間運行調度作業。
本教程教你使用Quartz 1.6.3開發調度作業。

本示例有點過時,新版Quartz版本為 2.2.3。

  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示例,顯示所有工作並手動觸發特定的工作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM