1、概述html
Quartz提供兩種基本做業存儲類型。第一種類型叫作RAMJobStore,第二種類型叫作JDBC做業存儲。在默認狀況下Quartz將任務調度的運行信息保存在內存中,這種方法提供了最佳的性能,由於內存中數據訪問最快。不足之處是缺少數據的持久性,當程序路途中止或系統崩潰時,全部運行的信息都會丟失。mysql
好比咱們但願安排一個執行100次的任務,若是執行到50次時系統崩潰了,系統重啓時任務的執行計數器將從0開始。在大多數實際的應用中,咱們每每並不須要保存任務調度的現場數據,由於不多須要規劃一個指定執行次數的任務。對於僅執行一次的任務來講,其執行條件信息自己應該是已經持久化的業務數據(如鎖定到期解鎖任務,解鎖的時間應該是業務數據),當執行完成後,條件信息也會相應改變。固然調度現場信息不只僅是記錄運行次數,還包括調度規則、JobDataMap中的數據等等。sql
若是確實須要持久化任務調度信息,Quartz容許你經過調整其屬性文件,將這些信息保存到數據庫中。使用數據庫保存任務調度信息後,即便系統崩潰後從新啓動,任務的調度信息將獲得恢復。如前面所說的例子,執行50次崩潰後從新運行,計數器將從51開始計數。使用了數據庫保存信息的任務稱爲持久化任務。數據庫
對比服務器
類型性能 |
優勢spa |
缺點.net |
RAMJobStorehtm |
不要外部數據庫,配置容易,運行速度快blog |
由於調度程序信息是存儲在被分配給JVM的內存裏面,因此,當應用程序中止運行時,全部調度信息將被丟失。另外由於存儲到JVM內存裏面,因此能夠存儲多少個Job和Trigger將會受到限制 |
JDBC做業存儲 |
支持集羣,由於全部的任務信息都會保存到數據庫中,能夠控制事物,還有就是若是應用服務器關閉或者重啓,任務信息都不會丟失,而且能夠恢復因服務器關閉或者重啓而致使執行失敗的任務 |
運行速度的快慢取決與鏈接數據庫的快慢 |
2、quartz存儲實例
2.一、創建數據存儲表
從下載到的quartz包裏面找到對應的sql腳本。
腳本位置:\quartz-1.8.6\quartz-1.8.6\docs\dbTables,mysql使用:tables_mysql_innodb.sql
1.在數據中創建了一個quartz的database,執行以上腳本
使用以上腳本可能會出現問題,將tables_mysql_innodb.sql中的TYENGINEPE=InnoDB或者TYPE=InnoDB所有都替換成ENGINE=InnoDB便可
2.二、新建工程,增長依賴
新建工程參看:http://www.cnblogs.com/bjlhx/p/7059671.html
增長pom依賴:mysql驅動,quartz包,common-lang等