004-Quartz存儲與持久化-基於quartz.properties的配置

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等

相關文章
相關標籤/搜索