Quartz 配置参数(转)

原文:https://blog.csdn.net/zixiao217/article/details/53091812

Quartz 参数

通常是通过 quartz.properties 属性配置文件(默认情况下均使用该文件)结合 StdSchedulerFactory 来使用 Quartz 的。StdSchedulerFactory 会加载属性配置文件并实例化一个 Scheduler。

默认情况下,Quartz 会加载 classpath 下的 quartz.properties 文件作为配置属性,如果找不到则会使用 quartz jar 下 org/quartz 包底下的 quartz.properties 文件。也可以指定 org.quartz.properties 属性指向你自定义的属性配置文件。或者也可以在调用 StdSchedulerFactory 的 getScheduler() 方法之前调用 initialize(xx) 初始化 factory 配置。

在配置文件中你可以使用 $@ 引用其他属性配置。

常用参数

参数名 默认值
org.quartz.scheduler.instanceName QuartzScheduler
org.quartz.scheduler.instanceId NON_CLUSTERED
org.quartz.scheduler.instanceIdGenerator.class org.quartz.simpl.SimpleInstanceIdGenerator
org.quartz.scheduler.threadName instanceName+’_QuartzSchedulerThread’
org.quartz.scheduler.makeSchedulerThreadDaemon false
org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer false
org.quartz.scheduler.idleWaitTime 30000
org.quartz.scheduler.dbFailureRetryInterval 15000
org.quartz.scheduler.classLoadHelper.class org.quartz.simpl.CascadingClassLoadHelper
org.quartz.scheduler.jobFactory.class org.quartz.simpl.PropertySettingJobFactory
org.quartz.scheduler.userTransactionURL java:comp/UserTransaction
org.quartz.scheduler.wrapJobExecutionInUserTransaction false
org.quartz.scheduler.skipUpdateCheck false
org.quartz.scheduler.batchTriggerAcquisitionMaxCount 1
org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow 0

org.quartz.scheduler.instanceName

使用 StdSchedulerFactory 的 getScheduler() 方法创建的 scheduler 实例名称,在同一个程序中可以根据该名称来区分 scheduler。如果在集群环境中使用,必须使用同一个名称。

org.quartz.scheduler.instanceId

scheduler 实例的id,必须是全局唯一的,即使在集群环境中“逻辑”相同的 scheduler。 或者可以使用 “SYS_PROP” 通过系统属性设置id。

org.quartz.scheduler.instanceIdGenerator.class

只有在 org.quartz.scheduler.instanceId 设置为 AUTO 的时候才使用该属性设置。默认情况下,org.quartz.simpl.SimpleInstanceIdGenerator 是基于 instanceId 和时间戳来自动生成的。其他的id生成器的实现包括 SystemPropertyInstanceIdGenerator 从系统属性获取 “org.quartz.scheduler.instanceId”。HostnameInstanceIdGenerator 使用主机名 (InetAddress.getLocalHost().getHostName())。也可以自定义生成方式。

org.quartz.scheduler.threadName

指定线程名,如果不指定的话,会自动使用 org.quartz.scheduler.instanceName 属性值加上后缀字符串 _QuartzSchedulerThread

org.quartz.scheduler.makeSchedulerThreadDaemon

指定 scheduler 的主线程是否为后台线程。

org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer

指定 Quartz 生成的线程是否继承初始化线程的上下文类加载器。这会影响 Quartz 的主调度线程、JDBCJobStore 的“熄火”处理线程、集群回复线程和线程池里的线程。 将该值设置为“true”可以帮助类加载,JNDI 查找,并在应用程序服务器上使用 Quartz 等相关问题。

org.quartz.scheduler.idleWaitTime

在调度程序空闲的时候,重复查询是否有可用触发器的等待时间。通常并不会设置为 true,除非你是用XA事务,并且延迟触发会导致问题的场景。 5000ms 以下是不推荐的,因为它会导致过的的数据库查询。1000ms以下是非法的。

org.quartz.scheduler.dbFailureRetryInterval

连接超时重试连接的间隔。使用 RamJobStore 时,该参数并没什么用。

org.quartz.scheduler.classLoadHelper.class

默认最可靠的方式就是指定 org.quartz.simpl.CascadingClassLoadHelper,没必要指定其他类。

org.quartz.scheduler.jobFactory.class

指定 JobFactory 的接口名称。负责实例化 jobClass。默认是 org.quartz.simpl.PropertySettingJobFactory ,只是在 job 被执行的时候简单调用 newInstance() 实例化一个job类。PropertySettingJobFactory 会使用反射机制通过 SchedulerContext、Job、Trigger 和 JobDataMaps 设置 job 的属性。

使用 JTA 事务时,可以设置事务相关的属性

org.quartz.scheduler.userTransactionURL

设置 Quartz 能够加载 UserTransaction JNDI 的 URL。默认值是 “java:comp/UserTransaction”。Websphere 的用户可能会设置为 “jta/usertransaction。只有在 Quartz 使用 JobStoreCMT 的时候,才会使用该属性,并且 org.quartz.scheduler.wrapJobExecutionInUserTransaction 也会设置为 true。

org.quartz.scheduler.wrapJobExecutionInUserTransaction

如果想使用 Quartz 在执行一个 job 前使用 UserTransaction,则应该设置该属性为 true。job 执行完、在 JobDataMap 改变之后事务会提交。默认值是 false。 可以在你的 job 类中使用 @ExecuteInJTATransaction 注解, 可以控制 job 是否使用事务。

org.quartz.scheduler.skipUpdateCheck

建议设置为 “org.quartz.skipUpdateCheck=true” 不会在程序运行中还去检查 quartz 是否有版本更新。

org.quartz.scheduler.batchTriggerAcquisitionMaxCount

允许调度程序一次性触发的触发器数量。默认值是 1。值越大一次性触发的任务就可以越多,但是在集群环境下,不建议设置为很大值。如果值 > 1,并且使用了 JDBC JobStore 的话,org.quartz.jobStore.acquireTriggersWithinLock 属性必须设置为 true,以避免脏数据。

org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow

允许触发器被获取并在其预定的触发时间之前触发的数量。默认值 0。

线程池参数

参数名 是否必须 类型 默认值
org.quartz.threadPool.class Y string null
org.quartz.threadPool.threadCount Y int -1
org.quartz.threadPool.threadPriority N string Thread.NORM_PRIORITY (5)

org.quartz.threadPool.class

线程池的名字。可以使用后 Quartz 的 “org.quartz.simpl.SimpleThreadPool”

org.quartz.threadPool.threadCount

指定线程数量。一般 1-100 足以满足应用需求了。

org.quartz.threadPool.threadPriority

线程优先级,Thread.MIN_PRIORITY (1) ~Thread.MAX_PRIORITY (10)之间,默认Thread.NORM_PRIORITY (5)。

监听器配置

全局触发器的监听器配置:

org.quartz.triggerListener.NAME.class = com.foo.MyListenerClass
org.quartz.triggerListener.NAME.propName = propValue
org.quartz.triggerListener.NAME.prop2Name = prop2Value

全局 job 的监听器配置:

org.quartz.jobListener.NAME.class = com.foo.MyListenerClass
org.quartz.jobListener.NAME.propName = propValue
org.quartz.jobListener.NAME.prop2Name = prop2Value

jobStore 的配置

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

数据源的配置

org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@10.0.1.23:1521:demodb
org.quartz.dataSource.myDS.user = myUser
org.quartz.dataSource.myDS.password = myPassword
org.quartz.dataSource.myDS.maxConnections = 30

从一个应用服务中获取数据源配置:

org.quartz.dataSource.myOtherDS.jndiURL=jdbc/myDataSource
org.quartz.dataSource.myOtherDS.java.naming.factory.initial=com.evermind.server.rmi.RMIInitialContextFactory
org.quartz.dataSource.myOtherDS.java.naming.provider.url=ormi://localhost
org.quartz.dataSource.myOtherDS.java.naming.security.principal=admin
org.quartz.dataSource.myOtherDS.java.naming.security.credentials=123

集群配置

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================
org.quartz.scheduler.instanceName = MyClusteredScheduler
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool  
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore  
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_

org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000

#============================================================================
# Configure Datasources  
#============================================================================
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@polarbear:1521:dev
org.quartz.dataSource.myDS.user = quartz
org.quartz.dataSource.myDS.password = quartz
org.quartz.dataSource.myDS.maxConnections = 5
org.quartz.dataSource.myDS.validationQuery=select 0 from dual

Tags:,

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注