Quartz配置详解
2019-10-13 本文已影响0人
Cuccci
Quartz配置详解
1. 调度器属性
prefix = org.quartz.scheduler
| 配置项 | 默认值 | 必填 | 备注 |
|---|---|---|---|
| instanceName | QuartzScheduler | 非 | 调度器实例名称 |
| instanceId | NON_CLUSTERED | 非 | 调度器实例id |
| instanceIdGenerator.class | org.quartz.simpl.SimpleInstanceIdGenerator | 非 | 调度器实例Id生成方式,该配置只有在 instanceId 设置为AUTO时才起作用 |
| threadName | instanceName+’_QuartzSchedulerThread’ | 非 | 线程名称 |
| makeSchedulerThreadDaemon | false | 非 | 是否将schedule的主线程设置为守护进程 |
| threadsInheritContextClassLoaderOfInitializer | false | 非 | 指定Quartz生成的线程是否继承初始化线程的上下文类加载器 |
| idleWaitTime | 30000 | 非 | 在调度程序空闲的时候,重复查询是否有可用触发器的等待时间 |
| dbFailureRetryInterval | 15000 | 非 | 连接超时重试连接的间隔 |
| classLoadHelper.class | org.quartz.simpl.CascadingClassLoadHelper | 非 | 类加载帮助类 |
| jobFactory.class | org.quartz.simpl.PropertySettingJobFactory | 非 | 指定JobFactory的类(接口)名称。负责实例化jobClass |
| wrapJobExecutionInUserTransaction | false | 非 | 是否在Quartz执行一个job前使用UserTransaction |
| userTransactionURL | java:comp/UserTransaction | 非 | 设置Quartz能够加载UserTransaction的JNDI的 URL |
| skipUpdateCheck | false | 非 | 在程序运行前检查quartz是否有版本更新 |
| batchTriggerAcquisitionMaxCount | 1 | 非 | 允许调度程序一次性触发的触发器数量 |
| batchTriggerAcquisitionFireAheadTimeWindow | 0 | 非 | 允许触发器被获取并在其预定的触发时间之前触发的数量 |
备注:
threadsInheritContextClassLoaderOfInitializer:
指定Quartz生成的线程是否继承初始化线程的上下文类加载器。这会影响Quartz的主调度线程、JDBCJobStore的”熄火”处理线程、集群回复线程和线程池里的线程。 将该值设置为true可以帮助类加载,JNDI查找。
batchTriggerAcquisitionMaxCount:
值越大一次性触发的任务就可以越多,但是在集群环境【非必须】下,不建议设置为很大值。如果值 > 1, 并且使用了 JDBC JobStore的话, org.quartz.jobStore.acquireTriggersWithinLock属性必须设置为true,以避免”弄脏”数据
2. 线程池属性
prefix = org.quartz.threadPool
| 配置项 | 默认值 | 必填 | 备注 |
|---|---|---|---|
| class | null | 是 | 线程池的实现类 |
| threadCount | -1 | 是 | 线程池中的线程数量 |
| threadPriority | 5 | 非 | 线程的优先级 |
| makethreadsdaemons | false | 非 | 是否设置为守护线程 |
| threadsInheritContextClassLoaderOfInitializingThread | true | 非 | |
| threadsinheritgroupofinitializingthread | false | 非 | |
| threadnameprefix | Worker | 非 | 线程默认的前缀 |
3. 监听器属性
prefix = org.quartz.triggerListener.NAME
全局的触发器监听器
| 配置项 | 默认值 | 必填 | 备注 |
|---|---|---|---|
| class | null | 非 | 全局触发器监听器实现类 |
prefix = org.quartz.jobListener.NAME
全局的触发器监听器
| 配置项 | 默认值 | 必填 | 备注 |
|---|---|---|---|
| class | null | 非 | 全局任务监听器实现类 |
4. 数据源存储方式
prefix = org.quartz.jobStore
| 配置项 | 默认值 | 必填 | 备注 |
|---|---|---|---|
| class | null | 是 | job的存储方式,可以选择存储在内存中或者持久化数据库中 |
| misfireThreshold | 60000 | 非 | 最大能忍受的触发超时时间 |
| driverDelegateClass | null | 是 | 用于处理DB之间差异的实现类 |
| dataSource | null | 是 | 配置数据源的名称 |
| tablePrefix | QRTZ_ | 是 | 数据表前缀 |
| useProperties | true | 非 | 使用key-value的形式存储JobDataMap |
| isClustered | false | 非 | 是否以集群方式运行 |
| clusterCheckinInterval | 20000 | 非 | 检入到数据库中的频率 |
| maxMisfiresToHandleAtATime | 20 | 是 | JobStore处理未按时触发的Job数量 |
| dontSetAutoCommitFalse | false | 非 | 事务是否自动提交 |
| selectWithLockSQL | false | 非 | 配置加锁的SQL语句,默认是: SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE |
| txIsolationLevelSerializable | false | 非 | 是否使用事务隔离级别中的可序列化 |
| acquireTriggersWithinLock | true | 非 | 触发事务前是否需要拥有锁 |
| lockHandler.class | null | 非 | 用于管理数据库中相关锁机制的类名 |
5. 插件
对于插件的配置项不是固定的,与配置的quartz插件类型有关