Quartz主配置

2018-09-20 10:50 更新

配置調(diào)度器設(shè)置

這些屬性配置了調(diào)度程序的標(biāo)識(shí),以及各種其他“頂級(jí)”設(shè)置。

Property NameReq'dTypeDefault Value
org.quartz.scheduler.instanceNamenostring'QuartzScheduler'
org.quartz.scheduler.instanceIdnostring'NON_CLUSTERED'
org.quartz.scheduler.instanceIdGenerator.classnostring (class name)
org.quartz.simpl
.SimpleInstanceIdGenerator
org.quartz.scheduler.threadNamenostring
instanceName
+ '_QuartzSchedulerThread'
org.quartz.scheduler
.makeSchedulerThreadDaemon
nobooleanfalse
org.quartz.scheduler
.threadsInheritContextClassLoaderOfInitializer
nobooleanfalse
org.quartz.scheduler.idleWaitTimenolong30000
org.quartz.scheduler.dbFailureRetryIntervalnolong15000
org.quartz.scheduler.classLoadHelper.classnostring (class name)
org.quartz.simpl
.CascadingClassLoadHelper
org.quartz.scheduler.jobFactory.classnostring (class name)org.quartz.simpl.PropertySettingJobFactory
org.quartz.context.key.SOME_KEYnostringnone
org.quartz.scheduler.userTransactionURLnostring (url)'java:comp/UserTransaction'
org.quartz.scheduler
.wrapJobExecutionInUserTransaction
nobooleanfalse
org.quartz.scheduler.skipUpdateChecknobooleanfalse
org.quartz.scheduler
.batchTriggerAcquisitionMaxCount
noint1
org.quartz.scheduler
.batchTriggerAcquisitionFireAheadTimeWindow
nolong0

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)的緣故)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)