`

spring4 + quarz2 集群

 
阅读更多

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:



 

 

  • 大小: 131.7 KB
  • 大小: 98 KB
分享到:
评论

相关推荐

    Spring4集成quartz2.2.1

    本文将详细讨论如何在Spring 4中集成Quartz 2.2.1,以及如何将项目打包成可执行的jar或war文件。 首先,我们需要在项目中引入Quartz的依赖。如果你的项目是基于Maven构建的,可以在pom.xml文件中添加以下依赖: ``...

    spring3+quartz2 定时调度例子,能正常运行的程序

    spring3.2.4+quartz2.2.0 定时调度例子,能正常运行的程序

    quartz与spring集群Demo

    针对Quartz与Spring做集群的Demo实例,主要解决了Quartz的JOB序列化问题。 源代码说明: support pkg:扩展Spring与Quartz集成的不足之处。 core pkg: 是自身调度业务的封装 实例运行依赖Oracle数据库,根据quartz...

    spring quartz 表达式在线生成器

    2. **Spring与Quartz集成**:介绍如何在Spring应用中配置Quartz,包括使用`@EnableScheduling`注解开启调度,以及如何定义`@Scheduled`注解的任务。 3. **Cron表达式**:详细讲解Cron表达式的组成部分和语法,以及...

    使用spring自带quarz实现定时处理

    Spring框架是Java开发中广泛应用的一个开源工具,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、数据访问、Web应用等。在处理定时任务时,Spring引入了Quartz库,使得开发者能够轻松地在Spring应用中实现...

    Spring整合Quartz定时任务实例

    Quartz是一款强大的、开源的...2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`)中,创建一个`SchedulerFactoryBean`,并设置相关的Quartz属性,如数据库连接、job存储方式等。例如: ```xml ...

    spring和quartz的定时器的启动和停止例子

    4. **启动和停止定时器**:在Spring应用启动时,由于配置了`autoStartup="true"`,Quartz定时器会自动启动。若需手动控制,可以使用ApplicationContext获取Scheduler实例并调用其`start()`或`standby()`方法来启动或...

    Quarz测试实例(导入工程即用)

    Quarz与Spring框架的整合,使得在Spring管理的上下文中可以方便地创建、管理和执行作业,大大增强了调度功能。 Quarz测试实例是为了帮助开发者理解如何在实际项目中配置和使用Quarz与Spring的集成。当你将这个...

    Spring 4.2 集成 Quartz2 任务调度示例

    Quartz 2.2.2版本提供了许多改进和新特性,包括更好的集群支持、优化的内存管理以及对Java 8的兼容性。 **二、Spring 4.2.2 概述** Spring 4.2.2是Spring框架的一个稳定版本,它引入了许多增强功能和错误修复。这个...

    spring定时任务

    在"spring-quarz-task"文件中,包含了与Quartz集成的相关代码和配置。Spring与Quartz的结合使得我们可以利用Spring的依赖注入和事务管理等特性,同时享受Quartz的灵活性和可扩展性。通过Spring的`...

    quarz分布式定时任务

    其中,前三种方案均不支持集群环境下的定时任务,而第四种方案即Spring结合Quartz支持数据库的方式,能够很好地解决上述问题。 ### Quartz框架简介 Quartz是一款完全由Java编写的开源作业调度框架。它不仅支持简单...

    QuartzDemo:Spring Boot + Quartz 搭建的一个拥有展示界面的任务调度系统 Demo

    一、关于 Quartz Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。 Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。 ...

    Quarz相关资料.zip

    2. **Quartz的主要组件** - **Scheduler**:调度器,是Quartz的核心,负责调度Job和Trigger。 - **Job**:代表一个可执行的工作单元,包含了任务的具体实现。 - **Trigger**:触发器,定义了Job的执行时间,可以...

    quarz.zip(小程序+JAVA+2024+最新+毕业设计+源码+PPT+Lw+使用说明+部署简单+操作简单+上手简单+系统

    (小程序+JAVA+2024+最新+毕业设计+源码+PPT+Lw+使用说明+部署简单+操作简单+上手简单+系统) 微信小程序是一种轻量级的应用程序,旨在提供简洁、快速的用户服务和体验。与传统的手机应用相比,小程序无需下载安装,...

    Quarz的jar包

    Quarz的jar包

    Spring quartz 定时任务调度

    2. **Spring与Quartz的整合** Spring 提供了对Quartz的全面支持,可以通过Spring的JobDetail和Trigger接口来配置和管理定时任务。通过在Spring的配置文件中定义bean,可以轻松地将Quartz任务纳入Spring的管理范围。...

    ssm框架+quartz2.2Jar包

    4. **启动Scheduler**:在Spring的初始化方法中启动Quartz Scheduler,使其开始监控并执行任务。 5. **使用Quartz API**:在需要的地方,如Service层,可以调用Quartz提供的API来触发或修改任务。 SSM框架结合...

    quarz_2.3.0脚本下载

    quarz_2.3.0脚本下载

    Quarz相关资料.rar

    2. **Quartz核心概念** - **Job**:代表要执行的任务,是业务逻辑的载体。 - **Trigger**:触发器,负责决定何时启动Job。 - **Scheduler**:调度器,管理和执行Jobs与Triggers的关联。 3. **Job和Trigger的配置...

Global site tag (gtag.js) - Google Analytics