Quartz配置
1. Quartz主要配置
| 属性名称 | 是否必选 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| org.quartz.scheduler.instanceName | 否 | String | QuartzScheduler | Schedule调度器的实体名字 |
| org.quartz.scheduler.instanceId | 否 | String | NON_CLUSTERED | Schedule调度器的实体的Id,必须唯一。 1. 当你想生成intanceId的时候可以设置为AUTO 2. 当你想从系统属性org.quartz.scheduler.instanceId取值时可以设置为SYS_PROP |
| org.quartz.scheduler.instanceIdGenerator.class | 否 | String(类名) | org.quartz.simpl.SimpleInstanceIdGenerator | 生成Schudule实体Id的类,只有在属性org.quartz.scheduler.instanceId设置为AUTO时使用,默认的实现org.quartz.scheduler.SimpleInstanceGenerator是基于主机名称和时间戳生成。其他的实现查看具体的文档 |
| org.quartz.scheduler.threadName | 否 | String | instanceName + ‘_QuartzSchedulerThread’ | Scheduler线程的名称 |
| org.quartz.scheduler.makeSchedulerThreadDaemon | 否 | boolean | false | 指定Scheduler是否以守护线程(服务)运行 |
| org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer | 否 | boolean | false | 目前不太理解 |
| org.quartz.scheduler.idleWaitTime | 否 | long | 30000 | 当调度程序空闲时,在重新查询可用触发器之前,调度程序将等待毫秒的时间数。不建议少于5000ms,而少于1000是不合法的参数 |
| org.quartz.scheduler.doFailureRetryInterval | 否 | long | 15000 | 使用JobStore(比如连接数据库)时Schueduler检测到失去数据库连接后重新尝试连接的毫秒数 |
| org.quartz.scheduler.classLoadHelper.class | 否 | String(类名) | org.quartz.simpl.CascadingClassLoaderHelper | 目前不太了解 |
| org.quartz.scheduler.jobFactory.class | 否 | String(类名) | org.quartz.simpl.PropertySettingJobFctory | 给Scheduler Context、Job、Trigger的JobDataMaps设置属性值的方式 |
| org.quartz.contenxt.key.SOME_KEY | 否 | String | None | 键值对,保存在Scheduler Context中,比如有这样的配置org.quartz.shceduler.key.MyKey=MyValue,则在Scheduler Context中赋值方式为scheduler.getContext().put(“MyKey”, “MyValue” |
| org.quartz.scheduler.userTransactionURL | 否 | String(url) | java:comp/UserTransaction | 事务管理JNDI URL地址。只有当Quartz使用JobStoreCMT和org.quartz.scheduler.wrapJobExecutionInUserTransaction 设置为true时使用 |
| org.quartz.scheduler.wrapJobExecutionInUserTransaction | 否 | boolean | false | 只有当你在执行一个Job时想使用UserTransaction时设置为true,参考@ExecuteInJTATransaction 注解 |
| org.quartz.scheduler.skipUpdateCheck | 否 | boolean | false | 是否跳过版本检测。可以设置系统参数org.terracotta.quartz.skipUpdateCheck=true或者在JAVA命令行使用-D选项。在正式库运行时应设置为true。 |
| org.quartz.scheduler.batchTriggerAcquisitionMaxCount | 否 | int | 1 | 在同一时间运行Scheduler获取trigger的数量。如果设置的数量>1,并且使用JDBC JobStore,则属性org.quartz.jobStore.acquireTriggersWithinLock应设置为true,可以避破坏数据。 |
| org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow | 否 | long | 0 | 运行Scheduler在获取和触发tigger的提前的时间。 |
2. 线程池配置
2.1 主要配置
| 属性名称 | 是否必选 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| org.quartz.threadPool.class | 是 | String(类名) | null | Scheduler使用的线程池名称,实现了ThreadPool接口,参考org.quartz.simpl.SimpleThreadPool |
| org.quartz.threadPool.threadCount | 是 | int | -1 | 线程池里面的线程的数据,取值在1-100 |
| org.quartz.threadPool.threadPriority | 否 | int | Thread.NORM_PRIORITY (5) | 线程的优先级,取值在Thread.MIN_PRIORITY(1)到Threa.MAX_PRIORITY(10) |
2.2 线程池的简单配置
| 属性名称 | 是否必选 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| org.quartz.threadPool.makeThreadsDaemons | 否 | boolean | fale | 指定在线程池里面创建的线程是否是守护线程 |
| org.quartz.threadPool.threadsInheritGroupOfInitializingThread | 否 | boolean | true | |
| org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread | 否 | boolean | false | |
| org.quartz.threadPool.threadNamePrefix | 否 | String | [Scheduler Name]_Workder | 指定线程池里面线程的名字的前缀 |
3. Listener配置
在实例化StdSchedulerFactory的时候可以注册一个全局的监听器到Scheduler中,全局监听器会监听每一个Job和Trigger的触发事件。
全局监听器必选有一个无参的构造函数,并且属性值只能是基本类型(包括String)。
配置例子:
//trigger listener配置
org.quartz.triggerListener.NAME = package.className
org.quartz.triggerListener.NAME.propName = propValue
//job listener配置
org.quartz.jobListener.NAME = package.className
org.quartz.jobListener.NAME.propName = propValue
4. JobStore配置
JobStore是Scheduler在运行时用来存储相关的信息的,比如Job, Trigger。
4.1 RAMJobStore
RAMJobStore实现类是在内存中存储信息的,程序一旦结束便丢失了相关的信息。
| 属性名称 | 是否必选 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| org.quartz.jobStore.class | 否 | String(类名) | org.quartz.simpl.RAMJobStore | 指定使用的JobStore |
| org.quartz.jobStore.misfireThreshold | 否 | int | 60000 | 触发器失败后下次触发的时间间隔 |
4.2 JDBCJobStore和JobStoreTX
JDBCJobStore和JobStoreTX都使用关系数据库来存储Schedule相关的信息。
JobStoreTX在每次执行任务后都使用commint或者rollback来提交更改。
如果在一个标准的独立应用或者在一个没有使用JTA事务管理的应用中使用Quartz,JDBCJobStore是一个不错的选择。
JobStoreTX的配置如下:
| 属性名称 | 是否必选 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| org.quartz.jobStore.class | 否 | String(类名) | org.quartz.simpl.jdbcjobstore.JobStoreTX | 使用JobStoreTX |
| org.quartz.jobStore.driverDelegateClass | 是 | String(类名) | null | 使用的数据库驱动,具体的驱动列表详情如下 |
| org.quartz.jobStore.dataSource | 是 | String | null | 使用的数据源名称,具体参照数据源配置 |
| org.quartz.jobStore.tablePrefix | 否 | String | QRTZ_ | 表的前缀 |
| org.quartz.jobStore.userProperties | 否 | boolean | false | 标示在JobDataMaps的数据全部是String |
| org.quartz.jobStore.misfireThreshold | 否 | int | 60000 | 触发器触发失败后再次触犯的时间间隔 |
| org.quartz.jobStore.isClustered | 否 | boolean | false | 如果有多个调度器实体的话则必须设置为true |
| org.quartz.jobStore.clusterCheckinInterval | 否 | long | 15000 | 检查集群下的其他调度器实体的事件间隔 |
| org.quartz.jobStore.maxMisfiresToHandleAtATime | 否 | int | 20 | |
| org.quartz.jobStore.dontSetAutoCommintFalse | 否 | boolean | false | |
| org.quartz.jobStore.selectWithLockSQL | 否 | String | select * from {0}locks where sched_name = {1} and lock_name = ? for update | |
| org.quartz.jobStore.txlsolationLevelSerializable | 否 | boolean | false | |
| org.quartz.jobStore.acquireTriggersWithinLocal | 否 | boolean | false | |
| org.quartz.jobStore.lockHandler.class | 否 | String | null | |
| org.quartz.jobStore.driverDelegateInitString | 否 | String | null |
4.2.1 org.quartz.jobStore.driverDelegateClass数据库驱动列表
- org.quartz.impl.jdbcstore.StdJDBCDelegate 适用于完全兼容JDBC的驱动
- org.quartz.impl.jdbcstore.MSSQLDelegate 适用于Miscrosoft SQL Server和Sybase数据库
- org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
- org.quartz.impl.jdbcjobstore.WebLogicDelegate
- org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
- org.quartz.impl.jdbcjobstore.oracle.WebLogicOracleDelegate
- org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate
- org.quartz.impl.jdbcjobstore.CloudscapeDelegate
- org.quartz.impl.jdbcjobstore.DB2v6Delegate
- org.quartz.impl.jdbcjobstore.DB2v7Delegate
- org.quartz.impl.jdbcjobstore.DB2v8Delegate
- org.quartz.impl.jdbcjobstore.HSQLDBDelegate
- org.quartz.impl.jdbcjobstore.PointbaseDelegate
- org.quartz.impl.jdbcjobstore.SybaseDelegate
5. 集群,使用JDBCJobStore和JobStoreTX
在JobStore使用JDBCJobStore、JobStoreTX、JobStoreCMT的情况下可以使用Quartz的集群特性,示意图如下:

简单的配置如下:
//主要配置
org.quartz.scheduler.instanceName = MyClusteredScheduler
org.quartz.scheduler.instanceId = AUTO //配置数据池连接
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.treadPriority = 5 //JobStore配置
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcstore.oracle.OracleDelegate
org.quartz.jobStore.userProperties = true
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.misfireThreshold = 60000 org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000 //DataSource数据源配置
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@localhost: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
Quartz配置的更多相关文章
- 浅谈Spring中的Quartz配置
浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...
- spring多个定时任务quartz配置
spring多个定时任务quartz配置 <?xml version=”1.0″ encoding=”UTF-8″?> <beans xmlns=”http://www.spring ...
- 使用spring+quartz配置多个定时任务
Spring被用在了越来越多的项目中, quartz也被公认为是比较好用的定时器设置工具, 在这里通过一个demo说明如何使用spring和quartz配置多个定时任务. 环境: eclipse + ...
- Quartz 配置文件属性
主要配置 Property Name Req'd Type Default Value org.quartz.scheduler.instanceName no string 'QuartzSched ...
- HangFire的定时任务和Quartz.NET总结(三)Quartz 配置
在一个Net Core需求中,需要在每天的凌晨三点去抓取两个电商仓库的剩余的每个料号的数量来写会自己的表中, 用到了HangFire的定时任务 这篇文章讲的很详细记录下 文章2 这篇更简单 Qu ...
- Spring-----定时任务Quartz配置之手动设置
一 配置xml如下: <!-- 定时任务配置 --> <bean id="scheduler" class="org.springframework.s ...
- spring quartz 配置实现定时任务 详解
一. 编写定时任务JAVA类 比如: public class QuartzJob { public QuartzJob(){ System.out.println(" ...
- Spring-----定时任务Quartz配置
第一种,作业类继承自特定的基类:org.springframework.scheduling.quartz.QuartzJobBean. 第一步:定义作业类 import org.quartz.Job ...
- Quartz.NET总结(三)Quartz 配置
前两篇文章,已经介绍了Quartz.NET的使用和Cron表达式表达式的写法,今天说一说Quartz的配置,Quartz相关的配置有三个quartz.config.quartz_jobs.xml.lo ...
- [代码]JAVA触发器,Spring的quartz配置
Spring的quartz中的配置代码,spring-quartz.xml: <?xml version="1.0" encoding="UTF-8"?& ...
随机推荐
- iOS视频流开发(1)—视频基本概念
iOS视频流开发(1)-视频基本概念 手机比PC的优势除了便携外,她最重要特点就是可以快速方便的创作多媒体作品.照片分享,语音输入,视频录制,地理位置.一个成功的手机APP从产品形态上都有这其中的一项 ...
- AutoML相关论文
本文为Awesome-AutoML-Papers的译文. 1.AutoML简介 Machine Learning几年来取得的不少可观的成绩,越来越多的学科都依赖于它.然而,这些成果都很大程度上取决于人 ...
- Pycharm 字体大小调整
Pycharm 字体大小调整 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/awyyauqpmy/article/details/79334496P ...
- 【vim】缩写 :ab [缩写] [要替换的文字]
一个很可能是最令人印象深刻的窍门是你可以在 Vim 中定义缩写,它可以实时地把你输入的东西替换为另外的东西.语法格式如下: :ab [缩写] [要替换的文字] 一个通用的例子是: :ab asap a ...
- linux源码Makefile详解(完整)
转自:http://www.cnblogs.com/Daniel-G/p/3286614.html 随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 ...
- ubuntu 用 apt get 安装某个包的某个版本
1.首先用如下命令查询你的机器安装了哪些版本: dpkg -l 'apache2*' 2.然后用如下命令查询远程库存在哪些版本: apt-cache madison "libqt5gui5& ...
- CentOs 6.6里kdump启动失败的原因
在VMware中新安装了CentOs 6.6,重启系统发现kdump服务启动失败 先来说一下,什么是kdump kdump 是一种先进的基于 kexec 的内核崩溃转储机制.当系统崩溃时,kdump ...
- Python-JS基础(基础结构~函数)
程序本质上分为三大结构: 顺序结构.分支结构.循环结构JavaScript中的程序结构也是这样,下面我们来分别介绍JS中的三种基本程序结构:我们上篇博客中介绍到的使用逻辑运算符&&实现 ...
- 100以内与7有关的数(for和if)
- java虚拟机内存不足,“Could not create the Java Virtual Machine”问题解决方案
在运行java程序时,遇到问题"Could not create the Java Virtual Machine."如下截图: