一 概述
集成细节,本文不再复述,请参考之前的quartz1.8.6单机版的集成文章
quartz系列(一)spring3.2.5与quartz1.8.6单机版集成详细说明 http://phl.iteye.com/blog/906313
,本文侧重讲解与quartz2.1.7集群版的集成。现今互联网“高端大气上档次”的应用,都会避免单点故障,提供集群方案。
集群版的功能如下:
1)部署多台服务器,同一时间有且只有一台服务器触发定时任务;
2)可以提供任务恢复机制,如果某一时,段所有集群都宕机,那么启动的时候,可以选择是否恢复继续执行没有执行到的定时任务;
3)可以避免单点故障,如果某一节点执行作业一半的时候失败,则其可以配置他节点重新执行这个作业;
4)如果一个任务执行时间过长,可以设置下一个任务执行的策略,并发执行,还是串行执行;
5)作业集群的服务端本质上是一个锁服务器,可以使用mysql,也可以使用terracotta;
6)quartz集群版,去掉定时的特性也可以理解为分布式线程池;
7)客户端的策略是抢占式锁,所以有一定的负载均衡的功能。
terracotta与mysql服务器锁实现比较
1)与基于数据库的JobStoreTx或JobStoreCMT实现的Quartz集群相比较,Terracotta基于内存的实现执行起来会快很多。Terracotta基于字段的数据变化处理使得任务和触发器的修改速度超快;
2)简单易用。不需要任何数据库的安装配置;
3)失败的任务可以立即被恢复。而基于数据库的实现则需要在制定的时间间隔内对调度器作检查才能完成恢复;
4)不需要JGroups或者其它集群配置;
5)terracotta和quartz是一家公司的技术,高度集成;同时terracotta提供了GUI管理界面,运维人员可以方便的管理集群;
6)基于数据库的实现,由于使用select for update语句,所以经常造成死锁,影响集群运行。
二 与spring的集成
项目结构,先上图
除了参考之前的集成文章以外,需要注意以下几点:
1)增加包
quartz-terracotta-2.3.5.jar
${terracotta_home}/common/terracotta-toolkit-1.6-runtime-5.5.0.jar
2)增加配置文件
quartz.properties
3)修改并扩展spring源码
quartz2.1和1.8接口发生了很大的变化,单机版集成没有问题,如果想集成集群版,则需要自己扩展。
xorg.springframework.scheduling.quartz.JobWrapper.java
4)启动调试:在java客户端使用quartz集群时
问题一
Caused by: java.lang.NoClassDefFoundError: org/terracotta/express/ClientFactory
把common目录下的terracotta-toolkit-1.0-runtime-1.0.0.jar文件拷贝到classpath就可以了。
问题二
terracotta客户端与com.googlecode.jmockit的JAR包不能一起使用,否则报错
三 terracotta
安装参考
quartz系列(三)terracotta2.3.5详细安装教程 http://phl.iteye.com/blog/1993833
比较好用的是
1)主备配置
2)GUI集群管理界面
3)maven引用与集成
http://terracotta.org/documentation/more/apache-maven
pom.xml引用如下
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>org.terracotta.quartz</groupId>
<artifactId>quartz-terracotta</artifactId>
<version>2.3.5</version>
</dependency>
<dependency>
<groupId>org.terracotta.toolkit</groupId>
<artifactId>terracotta-toolkit-1.6-runtime</artifactId>
<version>5.5.0</version>
</dependency>
四 附录
由于terracotta-toolkit-1.6-runtime-5.5.0.jar文件超过了10m,无法上传,所以附件中不包含此包,请读者们自行下载。
精力有限,只能根据本人的理解写出文章,如果朋友们有需要,请跟帖留言,或者有错误的地方,请大家一起勘误,我会整合到我的文章当中,谢谢。
作者简介
昵称:澳洲鸟
姓名:朴海林
QQ:85977328
MSN:6301655@163.com
转载请注明出处
- 大小: 57.4 KB
分享到:
相关推荐
自己弄了将近一天的成果。主要是修改MethodInvokingJobDetailFactoryBean这个类。
quartz2.1.7jar包
好像很多人整合出现了问题,所以抽个demo出来 是一个demo包含源码和lib 在tomcat下可以执行
NULL 博文链接:https://vista-move.iteye.com/blog/2274246
spring3整合quartz1.8和spring3整合quartz2.2两个版本示例
本人花费多日时间,亲测有效。所需文件代码完整,只需导入常用开发IDE和mysql数据库即可正常使用。
spring 集成quartz定时任务 用数据库实现quartz的集群
quartz-2.1.7.gz quartz-2.1.7 比较好用的定时任务
Quartz2.2.1基于Spring注解方式配置QuartzL,具体过程的效果看博文 http://blog.csdn.net/evankaka/article/details/45400781
springboot 集成 quartz 集群 加 sql 等 文章介绍 单机加集群都有 https://blog.csdn.net/weixin_42749765/article/details/88532413
quartz-2.1.7官方jar包,调度框架
spring quartz类全包spring quartz类全包
本文章是关于springboot集成quartz集群的步骤,LZ亲测。
support pkg:扩展Spring与Quartz集成的不足之处。 core pkg: 是自身调度业务的封装 实例运行依赖Oracle数据库,根据quartz框架包docs/dbTables/目录下的sql脚本文件,创建表结构,修改工程中的Spring数据源配置。 ...
所需jar如下: spring-beans-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-expression-3.2.4.RELEASE....quartz-all-2.1.7.jar spring-tx-3.2.4.RELEASE.jar slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar
Spring中的Quartz配置-Spring-定时器-java定时器.doc
quartz与spring集群, quartz与spring,quartz与spring
java + quartz实现定时任务,实现集群配置,在集群环境下多节点运行定时Quartz定任务,就会存在重复处理任务的现象,为解决这一问题,下面我将介绍使用 Quartz 的 TASK ( 12 张表)实例化到数据库,基于数据库自动...
quartz+spring集成完整开发富含文档cron表达式的配置说明,执行系统的定时器任务。可以直接集成到你的SSH框架中,完成复杂的定时器功能