本文翻译原文来自quartz官网:
主要配置
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 |
org.quartz.scheduler.threadName | no | string | instanceName |
org.quartz.scheduler | no | boolean | false |
org.quartz.scheduler | 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 |
org.quartz.scheduler.jobFactory.class | no | string (class name) | org.quartz.simpl.SimpleJobFactory |
org.quartz.context.key.SOME_KEY | no | string | none |
org.quartz.scheduler.userTransactionURL | no | string (url) | 'java:comp/UserTransaction' |
org.quartz.scheduler | no | boolean | false |
org.quartz.scheduler.skipUpdateCheck | no | boolean | false |
org.quartz.scheduler | no | int | 1 |
org.quartz.scheduler | no | long | 0 |
org.quartz.scheduler.instanceName
可以为任意字符串,对于scheduler来说此值没有意义,但可以用来区分同一系统中多个不同的实例。如果你使用了集群的功能,就必须对每个实例使用相同的名称,这样使这些实例“逻辑上”是同一个scheduler。
org.quartz.scheduler.instanceId
可以为任意字符串,但如果是集群的,就必须使所有scheduler实例此值唯一。如果你希望instanceId自动生成,可以使用“AUTO”,如果你希望此值来源于系统属性“org.quartz.scheduler.instanceId”,你可以使用“SYS_PROP”;
org.quartz.scheduler.instanceIdGenerator.class
只有当org.quartz.scheduler.instanceId =AUTO时才会生效。默认是org.quartz.simpl.SimpleInstanceIdGenerator,该生成器根据主机名和时间戳生成instanceid。其他生成器包括了:SystemPropertyInstanceIdGenerator (从系统属性org.quartz.scheduler.instanceId获取instance id),HostnameInstanceIdGenerator (根据当前主机名生成(InetAddress.getLocalHost().getHostName())),你也可以实现InstanceIdGenerator 接口实现自己的生成类。
org.quartz.scheduler.threadName
可以为是任何有效的java线程名称。如果此值没有配置,默认是“org.quartz.scheduler.instanceName”的值+固定字符串“_QuartzSchedulerThread”
org.quartz.scheduler.makeSchedulerThreadDaemon
true或者false,标识scheduler主线程是否为守护线程。
org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer
true或者false,标识Quartz产生的线程是否需要继承初始化线程(初始化Quartz实例的线程)。这会影响到Quartz的许多主任务线程,JDBCJobStore’s misfire handlingthread (if JDBCJobStore is used), cluster recovery thread (if clustering isused), and threads in SimpleThreadPool (if SimpleThreadPool is used)。将此值设置为true,可以帮助加载类,查找JNDI等等。
org.quartz.scheduler.idleWaitTime
这个属性设置了scheduler从空闲状态转为重新查询可用triggers的毫秒数。通常不建议修改它,除非你用到了XA transactions或者遇到了triggers本该出发但发生延迟的情况。5000ms以下通常不建议使用,这将产生大量的数据库查询操作。小于1000ms是不支持的。
org.quartz.scheduler.dbFailureRetryInterval
当JobStore中有大量链接的时候,需要等待的毫秒数。这个属性对使用RamJobStore没有什么意义。
org.quartz.scheduler.classLoadHelper.class
大多数稳健的应用,都使用默认值“org.quartz.simpl.CascadingClassLoadHelper”,它会依次使用其他ClassLoadHelper类,直到有一个生效为止。
org.quartz.scheduler.jobFactory.class
JobFactory的类名。默认“org.quartz.simpl.SimpleJobFactory”,你也可以用“org.quartz.simpl.PropertySettingJobFactory”。SimpleJobFactory调用newInstance()方法,PropertySettingJobFactory也是,但它可以将SchedulerContext和Job的内容或者trigger的JobDataMaps利用反射设置job的属性。
org.quartz.context.key.SOME_KEY
在scheduler context中的新建的键值对,例如:org.quartz.context.key.MyKey= MyValue,等价于scheduler.getContext().put(“MyKey”, “MyValue”).
org.quartz.scheduler.userTransactionURL
应该设置成JNDI URL,通过它Quartz可以找到应用服务的UserTransaction manger。默认值是“java:comp/UserTransaction”-大部分应用服务都是用这个配置。Websphere用户需要设置成“jta/usertransaction”。这个属性仅用于Quartz配置使用JobStoreCMT,并且org.quartz.scheduler.wrapJobExecutionInUserTransaction设置为true。
org.quartz.scheduler.wrapJobExecutionInUserTransaction
如果你想在执行job之前Quartz开启UserTransaction ,此属性应该设置为true。Job执行完,JobDataMap更新完(如果是StatefulJob)事务会提交。默认值是false,你也可以在你的job类上使用@ExecuteInJTATransaction 注解,以便在各自的job上决定是否开启JTA事务。
org.quartz.scheduler.skipUpdateCheck
此属性设置了是否需要检查更新。在生产环境,最好关闭检查更新。
org.quartz.scheduler.batchTriggerAcquisitionMaxCount
一个scheduler节点允许接收的trigger的最大数,默认值为1,这个值越大,定时任务执行的越多,但代价是集群节点之间的不均衡。
org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow
trigger被接受和提前执行的毫秒数。默认值为0。这个值约大,trigger接受和执行的数量越大,但其代价不能精确的估计。这对那些scheduler有大量的需要相近的时间执行的triggers有用。