最近项目要做集群,然后找了下资料发现quartz本身就支持集群,但是需要引入一些表,这里废话就少说了,这里就直接上代码吧,也提供了对应的代码下载https://github.com/zqh1989/quartz
1,首先下载quartz的jar包,找到docs的dbTables目录下边的对应的sql文件引入项目中
如图:我这边用的是mysql
2,quartz.properties配置
#============================================================== #Configure Main Scheduler Properties #============================================================== org.quartz.scheduler.instanceName = quartzScheduler org.quartz.scheduler.instanceId = AUTO #============================================================== #Configure ThreadPool #============================================================== org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 10 org.quartz.threadPool.threadPriority = 5 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true #============================================================== #Configure JobStore #============================================================== org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore.tablePrefix = QRTZ_ org.quartz.jobStore.isClustered = true org.quartz.jobStore.clusterCheckinInterval = 20000 org.quartz.jobStore.dataSource = myDS #============================================================== #Configure DataSource \uFF08\u6B64\u5904\u586B\u4F60\u81EA\u5DF1\u7684\u6570\u636E\u5E93\u8FDE\u63A5\u4FE1\u606F\uFF09 #============================================================== org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver org.quartz.dataSource.myDS.URL = jdbc\:mysql\://192.168.9.223:3306/cloud_live_course?createDatabaseIfNotExist\=true&characterEncoding\=utf-8 org.quartz.dataSource.myDS.user = root org.quartz.dataSource.myDS.password = ablejava org.quartz.dataSource.myDS.maxConnections =30
3,spring-time.xml的配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <!-- 调度器lazy-init='false'那么容器启动就会执行调度程序 --> <bean id = "startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:quartz.properties" /> <property name ="triggers"> <list> <ref bean ="doTime" /> </list> </property> <!-- 允许在Quartz上下文中使用Spring实例工厂 --> <property name = "applicationContextSchedulerContextKey" value="applicationContext" /> </bean> <!-- 触发器 --> <bean id = "doTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name = "jobDetail" ref="jobtask"></property> <!-- cron表达式 --> <property name = "cronExpression" value="10,15,20,25,30,35,40,45,50,55 * * * * ?"> </property> </bean> <!-- 任务 --> <bean id="jobtask" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass"> <value>zhang.quartz.MyDetailQuartzJobBean</value> </property> <property name="jobDataAsMap"> <map> <entry key="targetObject" value="synUsersJob"/> <entry key="targetMethod" value="execute"/> </map> </property> </bean> <!-- 要调用的工作类 --> <bean id = "synUsersJob" class="zhang.quartz.core.SynUsersJob"></bean> </beans>
4,web.xml的配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>liveCourse</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring/spring-config.xml classpath:spring/spring-time.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--转码 --> <filter> <filter-name>SpringEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>SpringEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- session超时定义,单位为分钟 --> <session-config> <session-timeout>60</session-timeout> </session-config> </web-app>
最后看执行效果,我这边启动了两个tomcat只有一个会起作用,然后停掉其中一个另一个马上就起来了
相关推荐
总结起来,"Spring+Quartz定时集群支持"涉及到的知识点主要包括:Spring与Quartz的集成、Quartz的集群配置、`MethodInvokingJobDetailFactoryBean`的使用、数据库表的设计以及通过IHS等手段实现的任务调度。...
【Spring+Quartz定时任务最简集群版1】是一个基于Spring和Quartz的定时任务解决方案,用于在分布式环境中实现任务的自动调度。本项目作为Dubbo工程的一部分,它依赖于Dubbo的一些公共组件,同时也提供了将定时任务...
Spring + quartz 定时任务修改定时时间不重启服务
java + quartz实现定时任务,实现集群配置,在集群环境下多节点运行定时Quartz定任务,就会存在重复处理任务的现象,为解决这一问题,下面我将介绍使用 Quartz 的 TASK ( 12 张表)实例化到数据库,基于数据库自动...
SpringBoot整合Quartz实现定时任务调度是企业级应用中常见的需求,主要用于自动化执行某些周期性的任务,例如数据备份、报表生成、系统维护等。Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度...
此外,由于Quartz支持集群,因此在多服务器环境下,可以实现任务的高可用性和负载均衡。 在ssh2_quartz这个文件中,可能包含了一个示例项目,演示了如何在SSH(Struts2、Spring、Hibernate)架构下整合Quartz进行...
Quartz支持从数据库存储作业和触发器,这样可以方便地进行任务的持久化和集群环境下的任务同步。 1. **Spring与Quartz的集成**:Spring提供了与Quartz的无缝集成,通过`Spring-Job`和`Spring-Trigger`接口,我们...
总之,Spring+Quartz的集成可以实现灵活且可靠的定时任务管理,通过集群配置,我们可以构建一个能够承受高并发、容错性强的定时任务系统。在实践中,我们不仅要关注技术细节,还要考虑到系统的扩展性、可维护性和...
在这个“quartz_springbatch_dynamic”项目中,我们将看到如何将这两个强大的工具结合起来,以实现动态集群环境中的定时任务执行,并使用MySQL作为数据存储。 Quartz是一个开源的作业调度框架,允许开发者创建、...
Spring与Quartz的集成主要基于Spring的`TaskExecution`和`TaskScheduling`模块,它允许我们以声明式的方式配置定时任务,同时也支持编程式的任务调度。以下将详细介绍如何利用Spring和Quartz实现多任务的定时功能。 ...
Quartz支持CRON表达式,可以创建复杂的调度规则,同时支持集群环境下的任务调度。`quartz-all-1.6.0.jar`包含了Quartz的核心功能。 **Spring与Quartz集成** Spring与Quartz的集成主要通过`org.springframework....
**Spring+Quartz定时调度详解** 在Java世界中,实现定时任务调度是非常常见的需求,Spring框架结合Quartz库提供了一种高效且灵活的解决方案。本文将深入探讨Spring与Quartz的整合,以及如何利用它们来创建和管理...
最近项目中使用了spring+Quartz定时任务、但是项目最近要集群部署、多个APP下如何利用Quartz 协调处理任务。 大家可以思考一下、现在有 A、B、C三个应用同时作为集群服务器对外统一提供服务、每个应用下各有一个...
Spring+Quartz配置定时任务实现代码 Spring和Quartz是两个非常流行的开源框架,Spring是一个基于Java的企业级应用程序开发框架,而Quartz是一个功能强大且灵活的开源调度框架。两者相结合,可以实现灵活可配置的...
本示例"spring3+quartz1.6.4 集群示例"是将两者结合,以实现一个能够支持集群的定时任务管理解决方案。 1. **Spring 3.x 框架** Spring 3.x 是Spring框架的一个版本,它引入了许多新特性,包括对Java 5和6的支持,...
【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...
Spring整合Quartz 2.2.3是Java开发者在实现定时任务时常用的一种技术组合。Quartz是一款开源的作业调度框架,它允许程序在特定时间执行预定的任务,而Spring则是一个强大的企业级应用开发框架,提供了丰富的依赖注入...
Spring Boot简化了Spring应用的初始搭建以及开发过程,提供了开箱即用的功能,而Quartz则是一个强大的任务调度库,常用于实现定时任务。 Spring Boot是一个基于Spring框架的快速开发工具,它通过预配置的starter ...
Spring和Quartz是两个广泛使用的Java框架,它们可以协同工作,实现复杂和灵活的定时任务管理。本篇文章将深入探讨如何在Spring与Quartz结合的环境中动态设置定时时间。 首先,Spring框架提供了方便的依赖注入和AOP...
Quartz 还具有集群功能,可以确保在多服务器环境中任务的可靠执行。 当 Spring 与 Quartz 结合使用时,Spring 可以通过其强大的容器管理和配置能力,将 Quartz 集成到应用程序中。例如,Spring 提供了 `org.spring...