1下载:
def springVersion = "4.2.4.RELEASE";
//core spring
compile "org.springframework:spring-context:$springVersion"
compile "org.springframework:spring-core:$springVersion"
compile "org.springframework:spring-webmvc:$springVersion"
compile "org.springframework:spring-aop:$springVersion"
compile "org.springframework:spring-expression:$springVersion"
compile "org.springframework:spring-beans:$springVersion"
compile "org.springframework:spring-aspects:$springVersion"
compile group: 'org.aopalliance', name: 'com.springsource.org.aopalliance', version: '1.0.0'
compile group: 'org.aspectj', name: 'com.springsource.org.aspectj.weaver', version: '1.6.8.RELEASE'
//定时任务集群
compile group: 'org.quartz-scheduler', name: 'quartz', version: '2.2.1'
compile group: 'org.quartz-scheduler', name: 'quartz-jobs', version: '2.2.1'
下载quartz 在docs\dbTables 中可以找到初始化数据库语句。
2.建立定时任务:
package task.spring.test;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class TaskInfoJobEx extends QuartzJobBean{
Logger log = LoggerFactory.getLogger(TaskInfoJobEx.class);
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
log.info("=========================我的定时任务===========================------------");
}
}
3.设置spring 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置任务bean类
<bean id="quartzTask" class="com.lqy.spring.task.QuartzTask"></bean>
-->
<!-- 配置方法映射工厂类 -->
<!-- MethodInvokingJobDetailFactoryBean不支持序列化 -->
<!-- <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="quartzTask"></property>
<property name="targetMethod" value="startTask"></property>
<property name="concurrent" value="false"></property>
concurrent : false表示等上一个任务执行完后再开启新的任务
</bean> -->
<!-- 配置方法映射工厂类 -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="task.spring.test.TaskInfoJobEx"></property>
<property name="durability" value="true"></property>
<property name="requestsRecovery" value="true" />
</bean>
<!-- 配置任务高度的的时间/周期 -->
<bean id="jobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"></property>
<property name="cronExpression" value="0 */1 * * * ?"></property>
<!-- <property name="startDelay" value="3000"></property> -->
</bean>
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- <property name="dataSource" ref="dataSource"></property> -->
<!--可选,QuartzScheduler 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了 -->
<property name="overwriteExistingJobs" value="true" />
<!--必须的,QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动 -->
<property name="startupDelay" value="30" />
<!-- 设置自动启动 -->
<property name="autoStartup" value="true" />
<property name="applicationContextSchedulerContextKey" value="applicationContextKey" />
<property name="configLocation" value="classpath:spring-quartz.properties" />
<property name="triggers">
<list>
<ref bean="jobTrigger"/>
</list>
</property>
</bean>
</beans>
4.spring-quartz.properties
#=============================================================
#Configure Main Scheduler Properties
#==============================================================
org.quartz.scheduler.instanceName = defaultScheduler
org.quartz.scheduler.instanceId = AUTO
#==============================================================
#Configure JobStore myDS
#==============================================================
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
org.quartz.jobStore.maxMisfiresToHandleAtATime = 1
org.quartz.jobStore.misfireThreshold = 120000
#\u9632\u6B62\u9AD8\u8D1F\u8F7D\u548C\u573A\u65F6\u95F4\u4E8B\u7269\u65F6\u9501\u8D85\u65F6
org.quartz.jobStore.txIsolationLevelSerializable = true
#==============================================================
#Configure ThreadPool
#==============================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
##thread count 1-100
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
#==============================================================
#Skip Check Update
#update:true
#not update:false
#==============================================================
org.quartz.scheduler.skipUpdateCheck = true
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true
#============================================================================
# Configure Datasources
#============================================================================
#数据库配置
org.quartz.dataSource.myDS.driver =oracle.jdbc.OracleDriver
org.quartz.dataSource.myDS.URL =jdbc:oracle:thin:@192.168.1.24:1521:dataInstance
org.quartz.dataSource.myDS.user =shiro
org.quartz.dataSource.myDS.password =shiro123
org.quartz.dataSource.myDS.maxConnections = 20
程序 和 数据库初始语句在附件中.
注意:如果定时任务集群不是在同一台集群时,需要同步服务的时间。
执行结果: 两台机器互斥执行
机器1:
机器2:
相关推荐
本文将详细讨论如何在Spring 4中集成Quartz 2.2.1,以及如何将项目打包成可执行的jar或war文件。 首先,我们需要在项目中引入Quartz的依赖。如果你的项目是基于Maven构建的,可以在pom.xml文件中添加以下依赖: ``...
spring3.2.4+quartz2.2.0 定时调度例子,能正常运行的程序
针对Quartz与Spring做集群的Demo实例,主要解决了Quartz的JOB序列化问题。 源代码说明: support pkg:扩展Spring与Quartz集成的不足之处。 core pkg: 是自身调度业务的封装 实例运行依赖Oracle数据库,根据quartz...
2. **Spring与Quartz集成**:介绍如何在Spring应用中配置Quartz,包括使用`@EnableScheduling`注解开启调度,以及如何定义`@Scheduled`注解的任务。 3. **Cron表达式**:详细讲解Cron表达式的组成部分和语法,以及...
Spring框架是Java开发中广泛应用的一个开源工具,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、数据访问、Web应用等。在处理定时任务时,Spring引入了Quartz库,使得开发者能够轻松地在Spring应用中实现...
Quartz是一款强大的、开源的...2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`)中,创建一个`SchedulerFactoryBean`,并设置相关的Quartz属性,如数据库连接、job存储方式等。例如: ```xml ...
4. **启动和停止定时器**:在Spring应用启动时,由于配置了`autoStartup="true"`,Quartz定时器会自动启动。若需手动控制,可以使用ApplicationContext获取Scheduler实例并调用其`start()`或`standby()`方法来启动或...
Quarz与Spring框架的整合,使得在Spring管理的上下文中可以方便地创建、管理和执行作业,大大增强了调度功能。 Quarz测试实例是为了帮助开发者理解如何在实际项目中配置和使用Quarz与Spring的集成。当你将这个...
Quartz 2.2.2版本提供了许多改进和新特性,包括更好的集群支持、优化的内存管理以及对Java 8的兼容性。 **二、Spring 4.2.2 概述** Spring 4.2.2是Spring框架的一个稳定版本,它引入了许多增强功能和错误修复。这个...
在"spring-quarz-task"文件中,包含了与Quartz集成的相关代码和配置。Spring与Quartz的结合使得我们可以利用Spring的依赖注入和事务管理等特性,同时享受Quartz的灵活性和可扩展性。通过Spring的`...
其中,前三种方案均不支持集群环境下的定时任务,而第四种方案即Spring结合Quartz支持数据库的方式,能够很好地解决上述问题。 ### Quartz框架简介 Quartz是一款完全由Java编写的开源作业调度框架。它不仅支持简单...
一、关于 Quartz Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。 Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。 ...
2. **Quartz的主要组件** - **Scheduler**:调度器,是Quartz的核心,负责调度Job和Trigger。 - **Job**:代表一个可执行的工作单元,包含了任务的具体实现。 - **Trigger**:触发器,定义了Job的执行时间,可以...
(小程序+JAVA+2024+最新+毕业设计+源码+PPT+Lw+使用说明+部署简单+操作简单+上手简单+系统) 微信小程序是一种轻量级的应用程序,旨在提供简洁、快速的用户服务和体验。与传统的手机应用相比,小程序无需下载安装,...
Quarz的jar包
2. **Spring与Quartz的整合** Spring 提供了对Quartz的全面支持,可以通过Spring的JobDetail和Trigger接口来配置和管理定时任务。通过在Spring的配置文件中定义bean,可以轻松地将Quartz任务纳入Spring的管理范围。...
4. **启动Scheduler**:在Spring的初始化方法中启动Quartz Scheduler,使其开始监控并执行任务。 5. **使用Quartz API**:在需要的地方,如Service层,可以调用Quartz提供的API来触发或修改任务。 SSM框架结合...
quarz_2.3.0脚本下载
2. **Quartz核心概念** - **Job**:代表要执行的任务,是业务逻辑的载体。 - **Trigger**:触发器,负责决定何时启动Job。 - **Scheduler**:调度器,管理和执行Jobs与Triggers的关联。 3. **Job和Trigger的配置...