• 文件加载位置

默认:优先顺序 Classpath:quartz.properties --> org/quartz/quartz.properties (quartz lib)

改变默认:设置一个系统属性"org.quartz.properties"指向对应的properties文件

  • 程序中显示指定

在StdSchedulerFactory.getScheduler()之前使用StdSchedulerFactory.initialize(xx)。

  • properties文件中的属性关系

固定前缀org.quartz

主要分为scheduler,ThreadPool,JobStore,plugin等等部分

例如ThreadPool的配置信息

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5

实例化ThreadPool的时候使用org.quartz.simpl.SimpleThreadPool,

实例化结束后threadCount,threadPriority 将以setter的形式注入到ThreadPool实例中

  • 属性值的复用

$propertyName

$@org.quartz.scheduler.instanceName

  • 官方配置文档

http://www.quartz-scheduler.org/documentation/quartz-1.x/configuration/

  • threadPool

#Quartz ThreadPool

org.quartz.threadPool.class=threadPool类名(SimpleThreadPool就好)

org.quartz.threadPool.threadCount=thread数量,不会动态增长(所有的JOB)

org.quartz.threadPool.threadPriority=thread优先级

#Quartz SimpleThreadPool(使用默认就好)

#org.quartz.threadPool.makeThreadsDaemons=true/false是否为守护线程

#org.quartz.threadPool.threadsInheritGroupOfInitializingThread=true/false

#org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true/false

  • jobStore

1)RAMJobStore

将schedule相关信息保存在RAM中,轻量级,速度快,遗憾的是应用重启时相关信息都将丢失。

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.misfireThreshold = 60000

misfireThreshold : 最大能忍受的触发超时时间,如果超过则认为“失误”

2)JDBC-JobStore

将schedule相关信息保存在RDB中.有两种实现:JobStoreTX和JobStoreCMT

前者为application自己管理事务

后者为application server管理事务,即全局事务JTA

JobStoreTX

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.driverDelegateClass

#类似于Hibernate的dialect,用于处理DB之间的差异,StdJDBCDelegate能满足大部分的DB
org.quartz.jobStore.dataSource

#这个值必须存于一个datasource的配置信息

#org.quartz.dataSource.XXX.driver...

org.quartz.jobStore.tablePrefix

#存储相关信息表的前缀

org.quartz.jobStore.useProperties

#JobDataMaps是否都为String类型

org.quartz.jobStore.misfireThreshold

#与RAMJobStore中的一致

org.quartz.jobStore.isClustered

#是否是应用在集群中,当应用在集群中时必须设置为TRUE,否则会出错org.quartz.jobStore.clusterCheckinInterval

#scheduler的checkin时间,时间长短影响failure scheduler的发现速度

org.quartz.jobStore.maxMisfiresToHandleAtATime

#jobStore处理未按时触发的Job的数量

org.quartz.jobStore.dontSetAutoCommitFalse

#true/false,true则调用connection的setAutoCommit(false)方法

org.quartz.jobStore.selectWithLockSQL

#加锁的SQL语句,默认为SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE

#{0}=$@org.quartz.jobStore.tablePrefix

org.quartz.jobStore.txIsolationLevelSerializable

#true/false, true则调用connection的setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE) 方法

org.quartz.jobStore.acquireTriggersWithinLock

#触发job时是否需要拥有锁

org.quartz.jobStore.lockHandler.class

#用于管理数据库中相关信息的锁机制的类名

  • dataSource

建议最大的连接数最少为ThreadPool的threadCount,并且如果应用经常访问scheduler的API的话最好是有一些额外的connection,也就是说要比ThreadPool的worker threads大一些

三种方式

1)datasource的相关信息全部定义于quartz.properties中,quartz自己创建datasource

org.quartz.dataSource.NAME.driver

org.quartz.dataSource.NAME.URL

org.quartz.dataSource.NAME.user

org.quartz.dataSource.NAME.password

org.quartz.dataSource.NAME.maxConnections

#以上为dataSource的基本属性,大家都懂的

#NAME必须与$@org.quartz.jobStore.dataSource一致

org.quartz.dataSource.NAME.validationQuery

#dataSource用于检测connection是否failed/corrupt的SQL语句

2)使用JNDI的datasource

org.quartz.dataSource.NAME.jndiURL

#JNDI URL

org.quartz.dataSource.NAME.java.naming.factory.initial

#JNDI InitialContextFactory

org.quartz.dataSource.NAME.java.naming.provider.url

org.quartz.dataSource.NAME.java.naming.security.principal

org.quartz.dataSource.NAME.java.naming.security.credentials

#后三行为连接到JNDI提供者的相关信息

3)用户自定义org.quartz.utils.ConnectionProvider实现类

org.quartz.dataSource.NAME.connectionProvider.class

org.quartz.dataSource.NAME.XXX

  • Cluster

实现故障处理和负载均衡,实现高可用性和扩展性

通过共享DB Tables实现,所以必须使用JDBC-Jobstore

负载均衡 : 谁先触发谁执行,并且一次只有一个scheduler触发

故障处理 : 当一个scheduler失败后,其它的实例可以发现那些执行失败的Jobs,假如Job对应的JobDetail标记为recovery(属性"requests recovery"),那么该Job就会被其它的实例重新执行,否则对应的Job只会被释放等待下次被触发。

实现:

org.quartz.jobStore.isClustered = true

所有的实例的quartz.properties文件除了org.quartz.scheduler.instanceId和org.quartz.threadPool.threadCount必须一致,org.quartz.scheduler.instanceId = AUTO 即可实现ID的不一致

注意:

1.不在不同的机器上实现集群功能,除非他们的时钟同步精确到秒

2.不实现集群的实例不使用同一套表

Quartzs -- Quartz.properties 配置的更多相关文章

  1. 【Quartz】配置最简单的集群

    在许多情况,我们希望我们的定时任务是可靠的,不会因系统故障.机器宕机而导致某一笔定时任务不能按时运行.这种情况下,我们就需要为Quartz做个集群. 最简单的情况,有两台机器或两个应用,同时维护一批定 ...

  2. Quartz的配置文件quartz.properties详解

    配置 quartz.properties 文件 文件 quartz.properties 定义了 Quartz 应用运行时行为,还包含了许多能控制 Quartz 运转的属性.这个文件应该放在class ...

  3. 【Quartz】Quartz存储与持久化-基于quartz.properties的配置

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.   Quartz存储与持久化 Quartz提供两种基本作业存储类型.第一种类型叫做RAM ...

  4. Quartz.NET配置

    概述 Quartz.NET 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性.Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行 ...

  5. Quartz动态配置表达的方法

    在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度.有关调度的实现我就第一就想到了Quartz这个开源调度组件,因为很多项目使用过,Spring结合Quartz静态配置调度任务时间, ...

  6. quartz.properties完整版

    我们通常是通过quartz.properties属性配置文件(默认情况下均使用该文件)结合StdSchedulerFactory 来使用Quartz的.StdSchedulerFactory 会加载属 ...

  7. C# Quartz的配置

    1. 介绍 Quartz为后台工作者提供了得便利,我们下面介绍一下它的配置.本文配置主要针对服务程序的配置. 但是在做下面配置之前,要安装包 Install-Package Quartz 2. Qua ...

  8. 二)quartz.properties

    The Properties File Quartz uses a properties file called (kudos on the originality) quartz.propertie ...

  9. Spring 与 Quartz 动态配置(数漫江湖)

    因为项目的需求,需要有动态配置计划任务的功能.本文在 Quartz JobBean 中获取配置的 Quartz cronExpression 时间表达式及 Spring Bean 的对象名.方法名并运 ...

随机推荐

  1. 【BZOJ】1090: [SCOI2003]字符串折叠(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1090 随便yy一下.. 设f[i,j]表示i-j的最小长度 f[i, j]=min{j-i+1, f ...

  2. 【wikioi】1049 棋盘染色(迭代深搜)

    http://www.wikioi.com/problem/1049/ 这题我之前写没想到迭代加深,看了题解,然后学习了这种搜索(之前我写的某题也用过,,但是不懂专业名词 囧.) 迭代加深搜索就是限制 ...

  3. BZOJ3676 [Apio2014]回文串

    Description 考虑一个只包含小写拉丁字母的字符串s.我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度.请你求出s的所有回文子串中的最 大出现值. Input 输入只有一行 ...

  4. [转] - Linux网络编程 -- 网络知识介绍

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

  5. 字符串中的一些基本操作函数(c语言)

    其中很多函数返回的都是首地址,程序中只是将该地址后的内容全部输出来了...并没有作特殊处理输出地址...还有几个函数有点小bug. #include"iostream" #incl ...

  6. hdu Inverting Cups

    这题需要分类讨论: 第一种情况: n为奇数m为偶数的情况无解,因为m为偶数,每次翻转将把从正面翻到反面的个数x减去从反面翻到正面的个数y,得到的数必定为偶数.因为x+y为偶数,x-y也为偶数.而总个数 ...

  7. html5文章 -- 应用HTML5 开发手机APP

    因为HTML5暂时无法短期内在PC普及,主要方向在使用高端浏览器的高端移动设备,所以可以用作开发Android系统的App.但只有Android2.2以上.iOS3.2以上均支持HTML5,两大平台有 ...

  8. SQL优化之【类型转换】

    DBA的日常工作中SQL优化占大半的时间,通常都是SQL语句性能问题或者schema设计有问题,最近遇到一个类型转换的问题,所以在这里分享一下,废话不多说了,直接建表进行测试. mysql), key ...

  9. Everything文件名实时搜索||解决局域网文件共享问题

    内容概要:Everything中文版下载地址及使用.用Everything轻松解决局域网文件共享问题.Everything语言设置问题 另:Everything只支持NTFS格式的磁盘(工作原理的缘故 ...

  10. 【iHMI43 4.3寸液晶模块】demo例程(版本1.00)发布

    ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:h ...