三. 配置 Quartz 使用集群
为 Quartz 配置集群环境的步骤比设置类似的 J2EE 集群环境容易的多:
1. 配置每个节点的 quartz.properties 文件。
2. 配置 JDBC JobStore。
3. 使用 Scheduler 信息(Job 和 Trigger) 装载数据库。
4. 启动每个 Quartz 节点。
·配置节点的 quartz.properties 文件
就像是运行 Quartz 在非集群环境中那样,每个 Quartz 应用需要一个 quartz.properties 文件。在第三章,“Hello, Quartz” 中提到过,假如你不指定它,会使用默认的 quartz.properties 文件(存在于 quartz.jar 文件中)。最好是指定这个文件,因为你终究是需求修改一个或多个的设置项。
当使用 Quartz 的集群特性,你需要为每个节点修改 quartz.properties 文件。代码 11.1 显示了一个用于集群实例的 quartz.properties 文件的例子。属性将在之后讨论。
代码 11.1. 集群实例的 quartz.properties 文件示例
- #==============================================================
- #Configure Main Scheduler Properties
- #==============================================================
- org.quartz.scheduler.instanceName = TestScheduler1
- org.quartz.scheduler.instanceId = instance_one
- #==============================================================
- #Configure ThreadPool
- #==============================================================
- org.quartz.threadPool.class = org.quartz.simpl.Simple ThreadPool
- org.quartz.threadPool.threadCount = 5
- 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.MSSQLDelegate
- org.quartz.jobStore.tablePrefix = QRTZ_
- org.quartz.jobStore.dataSource = myDS
-
- org.quartz.jobStore.isClustered = true
- org.quartz.jobStore.clusterCheckinInterval = 20000
- #==============================================================
- #Non-Managed Configure Datasource
- #==============================================================
- org.quartz.dataSource.myDS.driver = net.sourceforge.jtds.jdbc.Driver
- org.quartz.dataSource.myDS.URL = jdbc:jtds:sqlserver:
- org.quartz.dataSource.myDS.user = admin
- org.quartz.dataSource.myDS.password = admin
- org.quartz.dataSource.myDS.maxConnections = 10
·配置主要的 Scheduler 属性
在这一节中有两个属性应该配置
·org.quartz.scheduler.instanceName
·org.quartz.scheduler.instanceId
这两属性用于多处,用在 JDBC JobStore 中和数据库来唯一标识实例。
集群时为实例 ID 使用 AUTO
AUTO 为专门为集群准备的。不幸的是,在某些早期的版本,1.4.5 版所用的机制任何情况下都不会清理旧的实例 ID。1.5.1 版中有一些插入式的实例 ID 生成器,其中一个是基于节点的 IP 地址来生成 ID;只要你在一台给定的机器上仅有一个 Quartz 集群节点时这个生成器工作的很好。集群时应当使用 AUTO,因为很多人把 Quartz 放在 EAR 中,分布部署在集群的应用服务器上。这时候,EAR 中必然只有一个 quartz.properties 文件,因此它在所有的节点上是相同的。假如实例 ID 是硬编码的,Quartz 集群将不能正常工作,因为所有的节点有着一样的 ID。AUTO 就是为解决这个问题的。
一些其他严重的集群问题在 Quartz 1.5.1 被引入。如果你需要对 Quartz 集群,你或许该避免这个版本。 |
·配置 JobStore 块
为使用 Quartz 的集群,你需要用到 JobStoreTX 或者 JobStoreCMT 作为 Scheduler 的 JobStore。第六章,“Job 存储和持久化” 详细说明了如何设置和使用所提供的这两个 JDBC JobStore。从代码 11.1 中,你能发现和第六章所显示的设置是一样的,还有两个附加的属性:
·org.quartz.jobStore.isClustered
·org.quartz.jobStore.clusterChedkinInterval
通过设置 org.quartz.jobStore.isClustered 属性为 true,你就告诉了 Scheduler 实例要它参与到一个集群当中。这一属性会贯穿于调度框架的始终,用于修改集群环境中操作的默认行为。
org.quartz.jobStore.clusterCheckinInterval 属性定义了Scheduler 实例检入到数据库中的频率(毫秒为单位)。Scheduler 检查是否其他的实例到了它们应当检入的时候未检入;这能指出一个失败的 Scheduler 实例,且当前 Scheduler 会以此来接管任何执行失败并可恢复的 Job。通过检入操作,Scheduler 也会更新自身的状态记录。
clusterChedkinInterval 越小,Scheduler 节点检查失败的 Scheduler 实例就越频繁。默认值是 15000 (即15 秒)。
分享到:
相关推荐
quartz集群调度机制调研及源码分析,基于quartz 1.7版本
一个基于springboot的quartz集群dome。 向http://localhost:9090/job/addjob注入3个参数 类名:(及时定时任务的类如:com.ybjdw.site.job.NewJob) 组名:随意 定时启动方法:如“0/3 * * * * ?”(每3秒启动一次...
SSH框架,主要实现了OA中的RABC权限管理,整合了Quartz,并支持Quartz集群
本文章是关于springboot集成quartz集群的步骤,LZ亲测。
springboot 集成 quartz 集群 加 sql 等 文章介绍 单机加集群都有 https://blog.csdn.net/weixin_42749765/article/details/88532413
quartz集群Sql大放送,包含几十种数据库的初始sql,赶紧送上分来吧,记得评价返分
quartz集群时需要在数据库中创建的表结构(oracle,mysql,sqlserver,h2sql等22种数据库)
NULL 博文链接:https://lostangel0214.iteye.com/blog/1163503
java + quartz实现定时任务,实现集群配置,在集群环境下多节点运行定时Quartz定任务,就会存在重复处理任务的现象,为解决这一问题,下面我将介绍使用 Quartz 的 TASK ( 12 张表)实例化到数据库,基于数据库自动...
NULL 博文链接:https://daoshud1.iteye.com/blog/1955099
NULL 博文链接:https://vista-move.iteye.com/blog/2274246
NULL 博文链接:https://kissroom112.iteye.com/blog/2224442
quartz集群各种数据库建表脚本,基于quartz2.2.1版本。
NULL 博文链接:https://soulshard.iteye.com/blog/337886
NULL 博文链接:https://kenny-liu.iteye.com/blog/634853
基于内存的Quartz集群配置手册 很讨厌、鄙视那种把官方资料贴出来的人。 到网上搜索就是要快速入门、使用。 以上
spring 集成 quartz ,支持集群,job支持spring@Autowired注入及@Resource注入
Quartz集群配置[定义].pdf
自己弄了将近一天的成果。主要是修改MethodInvokingJobDetailFactoryBean这个类。