一 概述
集成细节,本文不再复述,请参考之前的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
分享到:
相关推荐
本文将深入探讨如何在Spring环境中集成Quartz以实现集群配置,以便于在分布式环境中进行高效的任务调度。 首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.spring...
Quartz与Spring的集成使得在Spring应用中管理任务变得更加容易,可以利用Spring的依赖注入和生命周期管理。 Spring Batch是一个用于处理大量数据的批处理框架。它提供了诸如事务管理、错误处理、读写器和处理器抽象...
这个"quartz-2.1.7"版本是Quartz库的一个重要发布,专注于提供可靠的定时任务管理和执行。在这个版本中,Quartz进行了多方面的优化和改进,以提高稳定性和性能。 Quartz的核心功能在于其强大的调度能力。它支持CRON...
在将 Spring 2 与 Quartz 整合到 Web 应用中时,主要涉及以下几个关键知识点: 1. **Spring 2 的核心概念**:Spring 2 提供了 IoC(Inversion of Control,控制反转)和 AOP(Aspect-Oriented Programming,面向切...
总的来说,将Quartz2.2.1与Spring3.1.1集成并在集群环境中运行,需要深入理解Quartz的配置和Spring的bean管理,同时关注集群的稳定性和容错性。通过合理配置和编程,我们可以创建一个高效、可靠的定时任务执行系统。...
总的来说,"quartz_springbatch"模版提供了一个完整的解决方案,用于构建基于Quartz和SpringBatch的定时任务集群,且与MySQL数据库集成,确保数据的可靠性和任务的高可用性。通过学习和理解这个模版,开发者可以快速...
至于博文链接中的内容,虽然无法直接查看,但通常会包含如何在实际项目中设置Quartz集群和Spring Data集成的详细步骤,包括配置示例、代码示例以及可能遇到的问题和解决方案。 在使用过程中,可能会遇到如任务并发...
【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...
总结来说,Spring与Quartz的集群模式是通过共享数据库存储和配置来实现任务的分布式管理,提高系统稳定性和容错性。`MethodInvokingJobDetailFactoryBean`是Spring中创建基于方法调用Job的工具,简化了任务定义的...
Quartz2.2.1是其一个版本,提供了丰富的功能和优化,包括集群支持、灵活的调度策略以及与Spring框架的深度集成。本文将详细介绍如何在Spring环境中使用注解方式配置Quartz。 1. **引入依赖** 在项目中,你需要引入...
二、Spring集成Quartz Spring通过提供QuartzJobBean和MethodInvokingJobDetailFactoryBean等类,使得将Quartz作业与Spring Bean相结合变得简单。我们可以将业务逻辑封装在Spring Bean中,然后通过QuartzJobBean来...
Quartz 可以与 Spring 框架集成,以实现任务的定时执行。 Spring 中的 Quartz 配置 在 Spring 中,Quartz 的配置主要通过 XML 文件来实现。我们可以在 Spring 的配置文件中定义 Quartz 的 bean,以便实现任务的...
Spring-Quartz的集成则将这些概念与Spring的IoC(Inversion of Control)容器相结合,提供了更好的依赖注入支持。以下是一些关键点: 1. **Bean集成**: Spring可以自动将Job实例作为Spring Bean管理,这样你就可以...
Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...
将Quartz与Spring结合使用,可以方便地在Spring应用程序中进行定时任务的管理。 在“quartz+spring分布式集群”场景下,我们可以实现跨多个节点的作业调度,从而提高系统的可扩展性和可靠性。JDBC-JobStore是Quartz...
- **事务管理**:当 Job 需要在事务环境中执行时,需要确保 Spring 事务管理与 Quartz 的集成正确。 - **错误处理**:合理处理 Job 执行异常,避免影响整个 Scheduler 的运行。 - **资源释放**:应用关闭时,确保...
Quartz的设计目标是提供一个灵活、可扩展的工作调度系统,能够与任何Java应用无缝集成,并且支持分布式调度。 Quartz的核心概念主要包括Job(任务)、Trigger(触发器)和Scheduler(调度器)。Job代表了实际需要...
Spring对Quartz进行了集成,使其更易于在Spring应用程序中使用。Spring提供了`FactoryBean`类,如`SchedulerFactoryBean`,用于创建和管理Quartz的`Scheduler`实例。这使得我们可以利用Spring的依赖注入(DI)和管理...
2. **Spring与Quartz集成**:介绍如何在Spring应用中配置Quartz,包括使用`@EnableScheduling`注解开启调度,以及如何定义`@Scheduled`注解的任务。 3. **Cron表达式**:详细讲解Cron表达式的组成部分和语法,以及...