這些屬性配置了調(diào)度程序的標(biāo)識(shí),以及各種其他“頂級(jí)”設(shè)置。
Property Name | Req'd | Type | Default Value |
---|---|---|---|
org.quartz.scheduler.instanceName | no | string | 'QuartzScheduler' |
org.quartz.scheduler.instanceId | no | string | 'NON_CLUSTERED' |
org.quartz.scheduler.instanceIdGenerator.class | no | string (class name) | org.quartz.simpl .SimpleInstanceIdGenerator |
org.quartz.scheduler.threadName | no | string | instanceName + '_QuartzSchedulerThread' |
org.quartz.scheduler .makeSchedulerThreadDaemon | no | boolean | false |
org.quartz.scheduler .threadsInheritContextClassLoaderOfInitializer | no | boolean | false |
org.quartz.scheduler.idleWaitTime | no | long | 30000 |
org.quartz.scheduler.dbFailureRetryInterval | no | long | 15000 |
org.quartz.scheduler.classLoadHelper.class | no | string (class name) | org.quartz.simpl .CascadingClassLoadHelper |
org.quartz.scheduler.jobFactory.class | no | string (class name) | org.quartz.simpl.PropertySettingJobFactory |
org.quartz.context.key.SOME_KEY | no | string | none |
org.quartz.scheduler.userTransactionURL | no | string (url) | 'java:comp/UserTransaction' |
org.quartz.scheduler .wrapJobExecutionInUserTransaction | no | boolean | false |
org.quartz.scheduler.skipUpdateCheck | no | boolean | false |
org.quartz.scheduler .batchTriggerAcquisitionMaxCount | no | int | 1 |
org.quartz.scheduler .batchTriggerAcquisitionFireAheadTimeWindow | no | long | 0 |
org.quartz.scheduler.instanceName
可以是任何字符串,并且該值對(duì)調(diào)度程序本身沒(méi)有意義,而是作為客戶端代碼在同一程序中使用多個(gè)實(shí)例時(shí)區(qū)分調(diào)度程序的機(jī)制。如果您正在使用群集功能,則必須對(duì)群集中“邏輯上”相同的調(diào)度程序的每個(gè)實(shí)例使用相同的名稱。
org.quartz.scheduler.instanceId
可以是任何字符串,但對(duì)于所有調(diào)度程序來(lái)說(shuō),必須是唯一的,就像它們?cè)诩褐惺窍嗤摹斑壿嫛闭{(diào)度程序一樣。如果希望為您生成Id,則可以使用值“AUTO”作為instanceId?;蛘呷绻阆胍@個(gè)值來(lái)自系統(tǒng)屬性“org.quartz.scheduler.instanceId”的值“SYS_PROP”。
org.quartz.scheduler.instanceIdGenerator.class
僅當(dāng)org.quartz.scheduler.instanceId設(shè)置為“AUTO” 時(shí)才使用。默認(rèn)為“org.quartz.simpl.SimpleInstanceIdGenerator”,它根據(jù)主機(jī)名和時(shí)間戳生成實(shí)例ID。其他IntanceIdGenerator實(shí)現(xiàn)包括SystemPropertyInstanceIdGenerator(它從系統(tǒng)屬性“org.quartz.scheduler.instanceId”獲取實(shí)例ID,HostnameInstanceIdGenerator使用本地主機(jī)名(InetAddress.getLocalHost()。getHostName()),還可以實(shí)現(xiàn)InstanceIdGenerator接口你的自我。
org.quartz.scheduler.threadName
可以是java線程的有效名稱的任何字符串。如果未指定此屬性,線程將接收調(diào)度程序的名稱(“org.quartz.scheduler.instanceName”)加上附加的字符串“_QuartzSchedulerThread”。
org.quartz.scheduler.makeSchedulerThreadDaemon
一個(gè)布爾值('true'或'false'),指定調(diào)度程序的主線程是否應(yīng)該是守護(hù)線程。另請(qǐng)參見(jiàn)org.quartz.scheduler.makeSchedulerThreadDaemon屬性來(lái)調(diào)優(yōu)SimpleThreadPool,如果這是您正在使用的線程池實(shí)現(xiàn)(最有可能是這種情況)。
org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer
一個(gè)布爾值('true'或'false'),用于指定Quartz產(chǎn)生的線程是否會(huì)繼承初始化線程(初始化Quartz實(shí)例的線程)的上下文ClassLoader。這將影響Quartz主調(diào)度線程,JDBCJobStore的失火處理線程(如果使用JDBCJobStore),集群恢復(fù)線程(如果使用集群)和SimpleThreadPool中的線程(如果使用SimpleThreadPool)。將此值設(shè)置為“true”可能有助于類加載,JNDI查找以及與應(yīng)用程序服務(wù)器中使用Quartz相關(guān)的其他問(wèn)題。
org.quartz.scheduler.idleWaitTime
在調(diào)度程序處于空閑狀態(tài)時(shí),調(diào)度程序?qū)⒃谥匦虏樵兛捎糜|發(fā)器之前等待的時(shí)間量(以毫秒為單位)。通常,您不必“調(diào)整”此參數(shù),除非您使用XA事務(wù),并且在觸發(fā)器延遲觸發(fā)時(shí)立即出現(xiàn)問(wèn)題。不推薦使用小于5000毫秒的值,因?yàn)樗鼤?huì)導(dǎo)致過(guò)多的數(shù)據(jù)庫(kù)查詢。小于1000的價(jià)值不合法。
org.quartz.scheduler.dbFailureRetryInterval
當(dāng)調(diào)查器檢測(cè)到JobStore中的連接丟失(例如數(shù)據(jù)庫(kù))時(shí),調(diào)度程序?qū)⒃谥卦囍g等待的時(shí)間量(以毫秒為單位)。當(dāng)使用RamJobStore時(shí),此參數(shù)顯然不是很有意義。
org.quartz.scheduler.classLoadHelper.class
默認(rèn)是最健壯的方法,它是使用“org.quartz.simpl.CascadingClassLoadHelper”類,它依次使用每個(gè)其他ClassLoadHelper類,直到一個(gè)工作。您應(yīng)該可能找不到需要為此屬性指定任何其他類,盡管在應(yīng)用程序服務(wù)器中似乎發(fā)生了奇怪的事情。所有當(dāng)前可能的ClassLoadHelper實(shí)現(xiàn)都可以在org.quartz.simpl包中找到。
org.quartz.scheduler.jobFactory.class
要使用的JobFactory的類名。JobFatcory負(fù)責(zé)生成JobClasses的實(shí)例。默認(rèn)值為“org.quartz.simpl.PropertySettingJobFactory”,它只需在類上調(diào)用newInstance()即可在每次執(zhí)行即將發(fā)生時(shí)生成一個(gè)新的實(shí)例。PropertySettingJobFactory還使用SchedulerContext和Job和Trigger JobDataMaps的內(nèi)容來(lái)反映設(shè)置作業(yè)的bean屬性。
org.quartz.context.key.SOME_KEY
表示將作為字符串放入“調(diào)度程序上下文”的名稱 - 值對(duì)。(見(jiàn)Scheduler.getContext())。所以例如,設(shè)置“org.quartz.context.key.MyKey = MyValue”將執(zhí)行與scheduler.getContext()等效的put(“MyKey”,“MyValue”)。
除非使用JTA事務(wù),否則事務(wù)相關(guān)屬性應(yīng)該不在配置文件中。
org.quartz.scheduler.userTransactionURL
應(yīng)設(shè)置為Quartz可以找到Application Server的UserTransaction管理器的JNDI URL。默認(rèn)值(如果未指定)為“java:comp / UserTransaction” - 幾乎適用于所有應(yīng)用程序服務(wù)器。Websphere用戶可能需要將此屬性設(shè)置為“jta / usertransaction”。僅當(dāng)Quartz配置為使用JobStoreCMT,并將org.quartz.scheduler.wrapJobExecutionInUserTransaction設(shè)置為true 時(shí)才使用此操作。
org.quartz.scheduler.wrapJobExecutionInUserTransaction
如果您希望Quartz在您的工作調(diào)用執(zhí)行之前啟動(dòng)UserTransaction,應(yīng)設(shè)置為“true”。在作業(yè)執(zhí)行方法完成后,JobDataMap更新后(如果它是StatefulJob),Tx將提交。默認(rèn)值為“false”。您可能還有興趣在您的作業(yè)類上使用@ExecuteInJTATransaction注釋,該批注可以控制單個(gè)作業(yè),無(wú)論Quartz是否應(yīng)啟動(dòng)JTA事務(wù) - 而此屬性會(huì)導(dǎo)致所有作業(yè)發(fā)生。
org.quartz.scheduler.skipUpdateCheck
是否跳過(guò)運(yùn)行快速Web請(qǐng)求以確定是否有可更新的Quartz版本可供下載。如果檢查運(yùn)行,并且找到更新,則會(huì)在Quartz的日志中報(bào)告它。您也可以使用系統(tǒng)屬性“org.terracotta.quartz.skipUpdateCheck = true”(可以在系統(tǒng)環(huán)境中設(shè)置或在java命令行上設(shè)置為-D)來(lái)禁用更新檢查。建議您禁用生產(chǎn)部署的更新檢查。
org.quartz.scheduler.batchTriggerAcquisitionMaxCount
允許調(diào)度程序節(jié)點(diǎn)一次獲?。ㄓ糜谟|發(fā))的觸發(fā)器的最大數(shù)量。默認(rèn)值為1.數(shù)字越大,觸發(fā)效率越高(在需要很多觸發(fā)器的情況下需要同時(shí)觸發(fā)) - 但是以群集節(jié)點(diǎn)之間可能的不平衡負(fù)載為代價(jià)。如果此屬性的值設(shè)置為> 1,并使用JDBC JobStore,則必須將屬性“org.quartz.jobStore.acquireTriggersWithinLock”設(shè)置為“true”以避免數(shù)據(jù)損壞。
org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow
允許觸發(fā)器在其預(yù)定的火災(zāi)時(shí)間之前被獲取和觸發(fā)的時(shí)間(毫秒)的時(shí)間量。默認(rèn)值為0.數(shù)量越大,觸發(fā)器觸發(fā)器的批次獲取越有可能一次可以選擇和觸發(fā)超過(guò)1個(gè)觸發(fā)器 - 以觸發(fā)計(jì)劃為代價(jià)不準(zhǔn)確地被觸發(fā)(觸發(fā)器可能會(huì)提早啟動(dòng)該數(shù)量)。在調(diào)度程序具有非常大數(shù)量的觸發(fā)器需要在或接近同一時(shí)間點(diǎn)觸發(fā)的情況下,這可能是有用的(為了表現(xiàn)的緣故)。
更多建議: