Quartz

Quartz 是什麼?

Quartz 是一款 Java 平臺上開源的任務調度器。html

快速開始

(1)引入依賴

compile "org.quartz-scheduler:quartz:2.3.0"
compile "org.quartz-scheduler:quartz-jobs:2.3.0"

(2)初始化

// 從工廠中獲取 Scheduler 對象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// 啓動
scheduler.start();

(3)新建一個 Job

public class TestJob implements Job{

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    System.err.println("Hello World!  TestJob is executing.");
  }
}

(4)調度一個 Job

// 添加 Job 的攜帶數據
JobDetail job = newJob(TestJob.class).withIdentity("job1", "group1").build();
// 新建一個觸發器
Trigger trigger = newTrigger().withIdentity("trigger1", "group1")
    .startNow()
    .withSchedule(simpleSchedule().withIntervalInSeconds(5)
                  .repeatForever())
    .build();
// 開始調度
scheduler.scheduleJob(job, trigger);

CronTrigger

Quartz 的 Cron 表達式不一樣於 Linux 系統上使用的 Cron 表達式。區別以下:java

# Linux
minute   hour   day   month   week
# Quartz
second  minute   hour   day   month   week  year(optional field)

是的,Quartz 擴充了 second 和 year,這是要特別注意的。linux

關於 Quartz Cron 表達式每一個字段的取值,整理以下:git

  • second:[0, 59]。
  • minute: [0, 59]。
  • hour:[0, 23]。
  • day:一個月中的第幾天,取值 [1, 31],注意不一樣月份有不一樣的上限值。
  • month:[0, 11],注意這跟 Linux 的有差別。還可取 [JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC]
  • week:星期幾,取值 [1, 7],其中 1 表明星期日。還可取 [SUN, MON, TUE, WED, THU, FRI, SAT]

字段中使用的特殊字符跟 Linux 無異,以下:github

  • 星號(*):表明全部可能的值,例如month字段若是是星號,則表示在知足其它字段的制約條件後每個月都執行該命令操做。
  • 逗號(,):能夠用逗號隔開的值指定一個列表範圍,例如,「1,2,5,7,8,9」
  • 中槓(-):能夠用整數之間的中槓表示一個整數範圍,例如「2-6」表示「2,3,4,5,6」
  • 正斜線(/):能夠用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次。同時正斜線能夠和星號一塊兒使用,例如*/10,若是用在minute字段,表示每十分鐘執行一次。

參考

  1. quartz-2.2.x/quick-start
  2. Lesson 6: CronTrigger - Quartz Tutorials
  3. 天天一個linux命令(50):crontab命令
相關文章
相關標籤/搜索