Quartz框架中的JobStore
問(wèn)題:最多可以運(yùn)行多少個(gè)任務(wù)(磁盤(pán)、內(nèi)存、線程數(shù))
Jobstore用來(lái)存儲(chǔ)任務(wù)和觸發(fā)器相關(guān)的信息,例如所有任務(wù)的名稱、數(shù)量、狀態(tài)等等。Quartz中有兩種存儲(chǔ)任務(wù)的方式,一種在在內(nèi)存,一種是在數(shù)據(jù)庫(kù)。?
RAMJobStore?
Quartz默認(rèn)的 JobStore是 RAMJobstore,也就是把任務(wù)和觸發(fā)器信息運(yùn)行的信息存儲(chǔ)在內(nèi)存中,用到了 HashMap、TreeSet、HashSet等等數(shù)據(jù)結(jié)構(gòu)。
如果程序崩潰或重啟,所有存儲(chǔ)在內(nèi)存中的數(shù)據(jù)都會(huì)丟失。所以我們需要把這些數(shù)據(jù)持久化到磁盤(pán)。?
JDBCJobStore
JDBCJobStore可以通過(guò) JDBC接口,將任務(wù)運(yùn)行數(shù)據(jù)保存在數(shù)據(jù)庫(kù)中。
JDBC的實(shí)現(xiàn)方式有兩種,JobStoreSupport類的兩個(gè)子類:
JobStoreTX:在獨(dú)立的程序中使用,自己管理事務(wù),不參與外部事務(wù)。
JobStoreCMT:(Container Managed Transactions (CMT),如果需要容器管理事務(wù)時(shí),使用它。使用 JDBCJobSotre時(shí),需要配置數(shù)據(jù)庫(kù)信息:?
org.quartz.jobStore.class:org.quartz.impl.jdbcjobstore.JobStoreTX? org.quartz.jobStore.driverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegate? #使用 quartz.properties,不使用默認(rèn)配置? org.quartz.jobStore.useProperties:true? #數(shù)據(jù)庫(kù)中 quartz表的表名前綴? org.quartz.jobStore.tablePrefix:QRTZ_? org.quartz.jobStore.dataSource:myDS? #配置數(shù)據(jù)源? org.quartz.dataSource.myDS.driver:com.mysql.jdbc.Driver? org.quartz.dataSource.myDS.URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8? org.quartz.dataSource.myDS.user:root? org.quartz.dataSource.myDS.password:123456? org.quartz.dataSource.myDS.validationQuery=select 0 from dual問(wèn)題來(lái)了?需要建什么表?表里面有什么字段?字段類型和長(zhǎng)度是什么?在官網(wǎng)的 Downloads鏈接中,提供了 11張表的建表語(yǔ)句:?quartz-2.2.3-distribution\quartz-2.2.3\docs\dbTables
2.3的版本在這個(gè)路徑下:src\org\quartz\impl\jdbcjobstore
表名與作用:
| QRTZ_BLOB_TRIGGERS | Trigger 作為Blob 類型存儲(chǔ) |
| QRTZ_CALENDARS | 存儲(chǔ)Quartz 的Calendar 信息 |
| QRTZ_CRON_TRIGGERS | 存儲(chǔ)CronTrigger,包括Cron 表達(dá)式和時(shí)區(qū)信息 |
| QRTZ_FIRED_TRIGGERS | 存儲(chǔ)與已觸發(fā)的Trigger 相關(guān)的狀態(tài)信息,以及相關(guān)Job 的執(zhí)行信息 |
| QRTZ_JOB_DETAILS | 存儲(chǔ)每一個(gè)已配置的Job 的詳細(xì)信息 |
| QRTZ_LOCKS | 存儲(chǔ)程序的悲觀鎖的信息 |
| QRTZ_PAUSED_TRIGGER_GRPS | 存儲(chǔ)已暫停的Trigger 組的信息 |
| QRTZ_SCHEDULER_STATE | 存儲(chǔ)少量的有關(guān)Scheduler 的狀態(tài)信息,和別的Scheduler 實(shí)例 |
| QRTZ_SIMPROP_TRIGGERS | 存儲(chǔ)CalendarIntervalTrigger 和DailyTimeIntervalTrigger 兩種類型的觸發(fā)器 |
| QRTZ_TRIGGERS | 存儲(chǔ)已配置的Trigger 的信息 |
| QRTZ_SIMPLE_TRIGGERS | 存儲(chǔ)SimpleTrigger 的信息,包括重復(fù)次數(shù)、間隔、以及已觸的次數(shù) |
?
總結(jié)
以上是生活随笔為你收集整理的Quartz框架中的JobStore的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Quartz框架中的Listener
- 下一篇: Quartz集成到 Spring