阅读(1205) (2)

Quartz主配置

2017-09-20 10:30:39 更新

配置调度器设置

这些属性配置了调度程序的标识,以及各种其他“顶级”设置。

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

可以是任何字符串,并且该值对调度程序本身没有意义,而是作为客户端代码在同一程序中使用多个实例时区分调度程序的机制。如果您正在使用群集功能,则必须对群集中“逻辑上”相同的调度程序的每个实例使用相同的名称。

org.quartz.scheduler.instanceId

可以是任何字符串,但对于所有调度程序来说,必须是唯一的,就像它们在集群中是相同的“逻辑”调度程序一样。如果希望为您生成Id,则可以使用值“AUTO”作为instanceId。或者如果你想要这个值来自系统属性“org.quartz.scheduler.instanceId”的值“SYS_PROP”。

org.quartz.scheduler.instanceIdGenerator.class

仅当org.quartz.scheduler.instanceId设置为“AUTO” 时才使用。默认为“org.quartz.simpl.SimpleInstanceIdGenerator”,它根据主机名和时间戳生成实例ID。其他IntanceIdGenerator实现包括SystemPropertyInstanceIdGenerator(它从系统属性“org.quartz.scheduler.instanceId”获取实例ID,HostnameInstanceIdGenerator使用本地主机名(InetAddress.getLocalHost()。getHostName()),还可以实现InstanceIdGenerator接口你的自我。

org.quartz.scheduler.threadName

可以是java线程的有效名称的任何字符串。如果未指定此属性,线程将接收调度程序的名称(“org.quartz.scheduler.instanceName”)加上附加的字符串“_QuartzSchedulerThread”。

org.quartz.scheduler.makeSchedulerThreadDaemon

一个布尔值('true'或'false'),指定调度程序的主线程是否应该是守护线程。另请参见org.quartz.scheduler.makeSchedulerThreadDaemon属性来调优SimpleThreadPool,如果这是您正在使用的线程池实现(最有可能是这种情况)。

org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer

一个布尔值('true'或'false'),用于指定Quartz产生的线程是否会继承初始化线程(初始化Quartz实例的线程)的上下文ClassLoader。这将影响Quartz主调度线程,JDBCJobStore的失火处理线程(如果使用JDBCJobStore),集群恢复线程(如果使用集群)和SimpleThreadPool中的线程(如果使用SimpleThreadPool)。将此值设置为“true”可能有助于类加载,JNDI查找以及与应用程序服务器中使用Quartz相关的其他问题。

org.quartz.scheduler.idleWaitTime

在调度程序处于空闲状态时,调度程序将在重新查询可用触发器之前等待的时间量(以毫秒为单位)。通常,您不必“调整”此参数,除非您使用XA事务,并且在触发器延迟触发时立即出现问题。不推荐使用小于5000毫秒的值,因为它会导致过多的数据库查询。小于1000的价值不合法。

org.quartz.scheduler.dbFailureRetryInterval

当调查器检测到JobStore中的连接丢失(例如数据库)时,调度程序将在重试之间等待的时间量(以毫秒为单位)。当使用RamJobStore时,此参数显然不是很有意义。

org.quartz.scheduler.classLoadHelper.class

默认是最健壮的方法,它是使用“org.quartz.simpl.CascadingClassLoadHelper”类,它依次使用每个其他ClassLoadHelper类,直到一个工作。您应该可能找不到需要为此属性指定任何其他类,尽管在应用程序服务器中似乎发生了奇怪的事情。所有当前可能的ClassLoadHelper实现都可以在org.quartz.simpl包中找到。

org.quartz.scheduler.jobFactory.class

要使用的JobFactory的类名。JobFatcory负责生成JobClasses的实例。默认值为“org.quartz.simpl.PropertySettingJobFactory”,它只需在类上调用newInstance()即可在每次执行即将发生时生成一个新的实例。PropertySettingJobFactory还使用SchedulerContext和Job和Trigger JobDataMaps的内容来反映设置作业的bean属性。

org.quartz.context.key.SOME_KEY

表示将作为字符串放入“调度程序上下文”的名称 - 值对。(见Scheduler.getContext())。所以例如,设置“org.quartz.context.key.MyKey = MyValue”将执行与scheduler.getContext()等效的put(“MyKey”,“MyValue”)。

除非使用JTA事务,否则事务相关属性应该不在配置文件中。

org.quartz.scheduler.userTransactionURL

应设置为Quartz可以找到Application Server的UserTransaction管理器的JNDI URL。默认值(如果未指定)为“java:comp / UserTransaction” - 几乎适用于所有应用程序服务器。Websphere用户可能需要将此属性设置为“jta / usertransaction”。仅当Quartz配置为使用JobStoreCMT,并将org.quartz.scheduler.wrapJobExecutionInUserTransaction设置为true 时才使用此操作。

org.quartz.scheduler.wrapJobExecutionInUserTransaction

如果您希望Quartz在您的工作调用执行之前启动UserTransaction,应设置为“true”。在作业执行方法完成后,JobDataMap更新后(如果它是StatefulJob),Tx将提交。默认值为“false”。您可能还有兴趣在您的作业类上使用@ExecuteInJTATransaction注释,该批注可以控制单个作业,无论Quartz是否应启动JTA事务 - 而此属性会导致所有作业发生。

org.quartz.scheduler.skipUpdateCheck

是否跳过运行快速Web请求以确定是否有可更新的Quartz版本可供下载。如果检查运行,并且找到更新,则会在Quartz的日志中报告它。您也可以使用系统属性“org.terracotta.quartz.skipUpdateCheck = true”(可以在系统环境中设置或在java命令行上设置为-D)来禁用更新检查。建议您禁用生产部署的更新检查。

org.quartz.scheduler.batchTriggerAcquisitionMaxCount

允许调度程序节点一次获取(用于触发)的触发器的最大数量。默认值为1.数字越大,触发效率越高(在需要很多触发器的情况下需要同时触发) - 但是以群集节点之间可能的不平衡负载为代价。如果此属性的值设置为> 1,并使用JDBC JobStore,则必须将属性“org.quartz.jobStore.acquireTriggersWithinLock”设置为“true”以避免数据损坏。

org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow

允许触发器在其预定的火灾时间之前被获取和触发的时间(毫秒)的时间量。默认值为0.数量越大,触发器触发器的批次获取越有可能一次可以选择和触发超过1个触发器 - 以触发计划为代价不准确地被触发(触发器可能会提早启动该数量)。在调度程序具有非常大数量的触发器需要在或接近同一时间点触发的情况下,这可能是有用的(为了表现的缘故)。