Quartz之 JobStore


JobStore負責跟蹤所有你給scheduler的“工作數據”:jobs, triggers, calendars, 等。

RAMJobStore

RAMJobStore 是使用最簡單的也是最高效(依據CPU時間)的JobStore 。RAMJobStore 正如它名字描述的一樣,它保存數據在RAM。
這就是為什么它是配置最簡單的也是最高效的原因。缺點是你的應用結束之后所有的數據也丟失了--這意味着RAMJobStore 不具有保持job和trigger持久的能力。對於一些程序是可以接受的,甚至是期望的,但對於其他的程序可能是災難性的。
要使用RAMJobStore你只需要在你的Quartz配置文件中添上這么一段話:
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
沒有其他配置了。

JDBCJobStore

JDBCJobStore,正如名字描述的一樣,它以JDBC的方式保存數據在數據庫中。它比RAMJobStore的配置復雜一點,也沒有RAMJobStore快。然而,性能缺點不是糟透了,特別是如果你在數據庫表主鍵上建立了索引。在機器之間的LAN(在scheduler 和數據庫之間)合理的情況下,檢索和更新一個被觸發的Trigger花費的時間少於10毫秒。
JDBCJobStore 幾乎適用於所有的數據庫,廣泛用於 Oracle, PostgreSQL, MySQL, MS SQLServer, HSQLDB, 和DB2。使用JDBCJobStore之前你必須首先創建一系列Quartz要使用的表。你可以發現表創建語句在Quartz發布目錄的 “docs/dbTables”下面。
你需要確定你的應用要使用的事務類型。如果你不想綁定調度命令(例如增加和移除Trigger)到其他的事務,你可以使用JobStoreTX (最常用的選擇)作為你的Jobstore。
如果你需要Quartz和其他的事務(例如在J2EE應用服務器中)一起工作,你應該使用JobStoreCMT ,Quartz 將讓應用服務器容器管理這個事務。
使用JobStoreTx配置Quartz:
  1.  
    org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
  2.  
    org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
  3.  
    #配置表的前綴
  4.  
    org.quartz.jobStore.tablePrefix = QRTZ_
  5.  
    #使用JNDI數據源的時候,數據源的名字
  6.  
    org.quartz.jobStore.dataSource = myDS

 

TerracottaJobStore

TerracottaJobStore 提供了一個方法:在不使用數據庫的情況下使它具有收縮性和強壯性。TerracottaJobStore 可以是集群的也可以是非集群的,在這兩種情況下為你的job數據提供了一個存儲機制用於應用程序重啟之間持久,因為數據是存儲在Terracotta服務器。它的性能比使用數據庫訪問JDBCJobStore好一點兒(大約是一個數量級),但是明顯比RAMJobStore慢。
配置參數:
  1.  
    org.quartz.jobStore.class = org.terracotta.quartz.TerracottaJobStore
  2.  
    org.quartz.jobStore.tcConfigUrl = localhost: 9510
  3.  


免責聲明!

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



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