Quartz配置詳解
1. 調(diào)度器屬性
prefix = org.quartz.scheduler
| 配置項(xiàng) | 默認(rèn)值 | 必填 | 備注 |
|---|---|---|---|
| instanceName | QuartzScheduler | 非 | 調(diào)度器實(shí)例名稱 |
| instanceId | NON_CLUSTERED | 非 | 調(diào)度器實(shí)例id |
| instanceIdGenerator.class | org.quartz.simpl.SimpleInstanceIdGenerator | 非 | 調(diào)度器實(shí)例Id生成方式,該配置只有在 instanceId 設(shè)置為AUTO時(shí)才起作用 |
| threadName | instanceName+’_QuartzSchedulerThread’ | 非 | 線程名稱 |
| makeSchedulerThreadDaemon | false | 非 | 是否將schedule的主線程設(shè)置為守護(hù)進(jìn)程 |
| threadsInheritContextClassLoaderOfInitializer | false | 非 | 指定Quartz生成的線程是否繼承初始化線程的上下文類加載器 |
| idleWaitTime | 30000 | 非 | 在調(diào)度程序空閑的時(shí)候,重復(fù)查詢是否有可用觸發(fā)器的等待時(shí)間 |
| dbFailureRetryInterval | 15000 | 非 | 連接超時(shí)重試連接的間隔 |
| classLoadHelper.class | org.quartz.simpl.CascadingClassLoadHelper | 非 | 類加載幫助類 |
| jobFactory.class | org.quartz.simpl.PropertySettingJobFactory | 非 | 指定JobFactory的類(接口)名稱。負(fù)責(zé)實(shí)例化jobClass |
| wrapJobExecutionInUserTransaction | false | 非 | 是否在Quartz執(zhí)行一個(gè)job前使用UserTransaction |
| userTransactionURL | java:comp/UserTransaction | 非 | 設(shè)置Quartz能夠加載UserTransaction的JNDI的 URL |
| skipUpdateCheck | false | 非 | 在程序運(yùn)行前檢查quartz是否有版本更新 |
| batchTriggerAcquisitionMaxCount | 1 | 非 | 允許調(diào)度程序一次性觸發(fā)的觸發(fā)器數(shù)量 |
| batchTriggerAcquisitionFireAheadTimeWindow | 0 | 非 | 允許觸發(fā)器被獲取并在其預(yù)定的觸發(fā)時(shí)間之前觸發(fā)的數(shù)量 |
備注:
threadsInheritContextClassLoaderOfInitializer:
指定Quartz生成的線程是否繼承初始化線程的上下文類加載器。這會(huì)影響Quartz的主調(diào)度線程、JDBCJobStore的”熄火”處理線程、集群回復(fù)線程和線程池里的線程。 將該值設(shè)置為true可以幫助類加載,JNDI查找。
batchTriggerAcquisitionMaxCount:
值越大一次性觸發(fā)的任務(wù)就可以越多,但是在集群環(huán)境【非必須】下,不建議設(shè)置為很大值。如果值 > 1, 并且使用了 JDBC JobStore的話, org.quartz.jobStore.acquireTriggersWithinLock屬性必須設(shè)置為true,以避免”弄臟”數(shù)據(jù)
2. 線程池屬性
prefix = org.quartz.threadPool
| 配置項(xiàng) | 默認(rèn)值 | 必填 | 備注 |
|---|---|---|---|
| class | null | 是 | 線程池的實(shí)現(xiàn)類 |
| threadCount | -1 | 是 | 線程池中的線程數(shù)量 |
| threadPriority | 5 | 非 | 線程的優(yōu)先級(jí) |
| makethreadsdaemons | false | 非 | 是否設(shè)置為守護(hù)線程 |
| threadsInheritContextClassLoaderOfInitializingThread | true | 非 | |
| threadsinheritgroupofinitializingthread | false | 非 | |
| threadnameprefix | Worker | 非 | 線程默認(rèn)的前綴 |
3. 監(jiān)聽器屬性
prefix = org.quartz.triggerListener.NAME
全局的觸發(fā)器監(jiān)聽器
| 配置項(xiàng) | 默認(rèn)值 | 必填 | 備注 |
|---|---|---|---|
| class | null | 非 | 全局觸發(fā)器監(jiān)聽器實(shí)現(xiàn)類 |
prefix = org.quartz.jobListener.NAME
全局的觸發(fā)器監(jiān)聽器
| 配置項(xiàng) | 默認(rèn)值 | 必填 | 備注 |
|---|---|---|---|
| class | null | 非 | 全局任務(wù)監(jiān)聽器實(shí)現(xiàn)類 |
4. 數(shù)據(jù)源存儲(chǔ)方式
prefix = org.quartz.jobStore
| 配置項(xiàng) | 默認(rèn)值 | 必填 | 備注 |
|---|---|---|---|
| class | null | 是 | job的存儲(chǔ)方式,可以選擇存儲(chǔ)在內(nèi)存中或者持久化數(shù)據(jù)庫(kù)中 |
| misfireThreshold | 60000 | 非 | 最大能忍受的觸發(fā)超時(shí)時(shí)間 |
| driverDelegateClass | null | 是 | 用于處理DB之間差異的實(shí)現(xiàn)類 |
| dataSource | null | 是 | 配置數(shù)據(jù)源的名稱 |
| tablePrefix | QRTZ_ | 是 | 數(shù)據(jù)表前綴 |
| useProperties | true | 非 | 使用key-value的形式存儲(chǔ)JobDataMap |
| isClustered | false | 非 | 是否以集群方式運(yùn)行 |
| clusterCheckinInterval | 20000 | 非 | 檢入到數(shù)據(jù)庫(kù)中的頻率 |
| maxMisfiresToHandleAtATime | 20 | 是 | JobStore處理未按時(shí)觸發(fā)的Job數(shù)量 |
| dontSetAutoCommitFalse | false | 非 | 事務(wù)是否自動(dòng)提交 |
| selectWithLockSQL | false | 非 | 配置加鎖的SQL語(yǔ)句,默認(rèn)是: SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE |
| txIsolationLevelSerializable | false | 非 | 是否使用事務(wù)隔離級(jí)別中的可序列化 |
| acquireTriggersWithinLock | true | 非 | 觸發(fā)事務(wù)前是否需要擁有鎖 |
| lockHandler.class | null | 非 | 用于管理數(shù)據(jù)庫(kù)中相關(guān)鎖機(jī)制的類名 |
5. 插件
對(duì)于插件的配置項(xiàng)不是固定的,與配置的quartz插件類型有關(guān)