我们通常是通过quartz.properties属性配置文件(默认情况下均使用该文件)结合StdSchedulerFactory 来使用Quartz的。StdSchedulerFactory 会加载属性配置文件并实例化一个Scheduler。
默认情况下,Quartz会加载classpath下的”quartz.properties”文件作为配置属性,如果找不到则会使用quartz框架自己jar下org/quartz包底下的”quartz.properties”文件。当然你也可以指定”org.quartz.properties”属性指向你自定义的属性配置文件。或者,你也可以在调用StdSchedulerFactory的 getScheduler()方法之前调用 initialize(xx)初始化factory配置。
【【任务调度框架Quartz】|任务调度框架Quartz(五)Quartz任务调度框架之最全Quartz系统参数配置详解】(本文章分享在CSDN平台,更多精彩请阅读 东陆之滇的csdn博客:http://blog.csdn.net/zixiao217)
在配置文件中你可以使用”$@”引用其他属性配置。
主调度程序Scheduler的配置
参数名 | 是否必须 | 类型 | 默认值 |
---|---|---|---|
org.quartz.scheduler.instanceName | N | string | ‘QuartzScheduler’ |
org.quartz.scheduler.instanceId | N | string | ‘NON_CLUSTERED’ |
org.quartz.scheduler.instanceIdGenerator.class | N | string (class name) | org.quartz.simpl.SimpleInstanceIdGenerator |
org.quartz.scheduler.threadName | N | string | instanceName+’_QuartzSchedulerThread’ |
org.quartz.scheduler.makeSchedulerThreadDaemon | N | boolean | false |
org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer | N | boolean | false |
org.quartz.scheduler.idleWaitTime | N | string | 30000 |
org.quartz.scheduler.dbFailureRetryInterval | N | long | 15000 |
org.quartz.scheduler.classLoadHelper.class | N | string (class name) | org.quartz.simpl.CascadingClassLoadHelper |
org.quartz.scheduler.jobFactory.class | N | string (class name) | org.quartz.simpl.PropertySettingJobFactory |
org.quartz.context.key.SOME_KEY | N | string | none |
org.quartz.scheduler.userTransactionURL | N | string (url) | ‘java:comp/UserTransaction’ |
org.quartz.scheduler.wrapJobExecutionInUserTransaction | N | boolean | false |
org.quartz.scheduler.skipUpdateCheck | N | boolean | false |
org.quartz.scheduler.batchTriggerAcquisitionMaxCount | N | int | 1 |
org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow | N | long | 0 |
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 bean的属性。
使用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.terracotta.quartz.skipUpdateCheck=true”不会在程序运行中还去检查quartz是否有版本更新。
org.quartz.scheduler.batchTriggerAcquisitionMaxCount 允许调度程序一次性触发的触发器数量。.默认值是1。值越大一次性触发的任务就可以越多,但是在集群环境下,不建议设置为很大值。如果值 > 1, 并且使用了 JDBC JobStore的话, org.quartz.jobStore.acquireTriggersWithinLock属性必须设置为true,以避免”弄脏”数据。
org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow 允许触发器被获取并在其预定的触发时间之前触发的数量。默认值0。
Quartz线程池的配置
参数名 | 是否必须 | 类型 | 默认值 |
---|---|---|---|
org.quartz.threadPool.class | Y | string (class name) | null |
org.quartz.threadPool.threadCount | Y | string | -1 |
org.quartz.threadPool.threadPriority | N | int | Thread.NORM_PRIORITY (5) |
org.quartz.threadPool.threadCount 指定线程数量。一般1-100足以满足你的应用需求了。
org.quartz.threadPool.threadPriority 线程优先级,Thread.MIN_PRIORITY (1) and 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 = 60000org.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
推荐阅读
- spring|springboot增删改查案例
- Flink 基础知识 - 时间、窗口、水位线
- 基于CDH 6.3.0 搭建 Hive on Spark 及相关配置和调优
- SpringBoot技术专题「开发实战系列」动态化Quartz任务调度机制+实时推送任务数据到前
- java|Java 定义线段Line类,用两个端点坐标表示线段位置,定义计算线段长度的方法,以及线段平移的方法
- 交换机的基本原理与配置
- #|SpringCloud Alibaba 之Seata(总体第三篇)
- Rest-assured|Rest-assured1- 测试框架
- flink滚动日志的配置