Spring Boot--自定義Starter之spring-boot-starter-quartz

痛點

在Spring中使用計劃任務,有兩種方案可供選擇:1、用Spring原生的計劃任務,使用起來很是簡單,只須要用到@Scheduled註解便可;2、集成Quartz來作計劃任務,須要配置大量的Quartz原生類。  
對於第一種來講,侷限性在於不支持計劃任務的集羣,若是有多個計劃任務的項目一塊兒啓動的話,每一個JVM都會執行一遍預約時間的計劃任務。對於Quartz來講,能夠經過集羣來保證在預約的時間點只會執行一次對應的計劃任務。  
這裏有一個問題呢,就是Spring集成了Quartz,但卻並無提供像@Scheduled這樣好用的註解。  
這個項目就是爲了解決上述問題而生的,讓Quartz的集成變得更簡單直接,同時支持Quartz的集羣模式。    git

Quartz集羣

先說一下Quartz的集羣。  
Quartz的集羣有賴於數據庫的支持,因此這裏咱們須要一個專門的庫。建表的sql在resources/sqls下面(只支持MySQL),根據要用的數據庫引擎選擇不一樣的sql文件。   這裏要注意一下,這個建表的sql文件不是每一個版本都適用的,這裏只適用於quartz的2.2.3版本。若是你要換版本,去官網下載對應版本的quartz,裏面有相應的sql。   建完庫以後,在使用這個Starter的時候,配置文件中須要有這些屬性:spring

quartz.scheduler.instanceName=
quartz.datasource.driver-class-name=
quartz.datasource.url=
quartz.datasource.username=
quartz.datasource.password=
quartz.datasource.maxConnections=

分別是quartz的實例名以及一些數據庫配置。    sql

@QuartzScheduled註解

@QuartzScheduled和@Scheduled使用起來比較類似,註解到方法上便可。  
@QuartzScheduled目前只支持cron表達式,例如:數據庫

/** 凌晨自動同步一次 */
    @QuartzScheduled("20 0 0 * * ?")
    public void execute() {
        alarmService.sendSyncDingUsers();
    }

開源地址

碼雲:spring-boot-starter-quartzspring-boot

相關文章
相關標籤/搜索