Spring结合Quartz实现多任务定时调用
2014-07-08 14:08
423 查看
Quartz框架提供了丰富的任务调度支持,比如,在何时执行何种任务,它是一个开源的由OpenSymphony维护的项目,开发者能够在Java EE,或单独的Java SE应用中使用它。无论是简单的任务调度,还是复杂的企业级应用,Quartz都能够很好地胜任。
如果开发者需要开发如下方面的应用,则Quartz是理想的选择。◆驱动工作流:比如,如果新创建的流程任务需要在2小时内处理完,则在2小时后Quartz会检查订单是否成功处理。如果没有处理,则Quartz会依据工作流定义的规则来对订单进行处理,销毁它,或者进行其他处理。◆系统维护工作:比如,在每个工作日的固定时间将RDBMS中的内容导出为XML文件。配置Spring的文件:
任务一:TestJob
任务二:TestJobTwo
测试类:
结果:
本文出自 “梦朝思夕” 博客,请务必保留此出处http://qiangmzsx.blog.51cto.com/2052549/1435837
如果开发者需要开发如下方面的应用,则Quartz是理想的选择。◆驱动工作流:比如,如果新创建的流程任务需要在2小时内处理完,则在2小时后Quartz会检查订单是否成功处理。如果没有处理,则Quartz会依据工作流定义的规则来对订单进行处理,销毁它,或者进行其他处理。◆系统维护工作:比如,在每个工作日的固定时间将RDBMS中的内容导出为XML文件。配置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-3.0.xsd "> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" autowire="no" > <property name="triggers"> <list> <ref bean="testTrigger" /> <ref bean="testTriggerTwo" /> </list> </property> <property name="autoStartup" value="true" /> </bean> <bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="testJobDetail" /> <property name="cronExpression" value="*/2 * * * * ?" /> <!-- 每隔2秒钟触发一次 --> </bean> <bean id="testTriggerTwo" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="testJobDetailTwo" /> <property name="cronExpression" value="*/5 * * * * ?" /> <!-- 每隔5秒钟触发一次 --> </bean> <bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testJob" /> <property name="targetMethod" value="execute" /> <property name="concurrent" value="false" /> <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 --> </bean> <bean id="testJobDetailTwo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testJobTwo" /> <property name="targetMethod" value="execute" /> <property name="concurrent" value="false" /> <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 --> </bean> <bean id="testJob" class="com.mzsx.spring.quartz.TestJob"></bean> <bean id="testJobTwo" class="com.mzsx.spring.quartz.TestJobTwo"></bean> </beans>
任务一:TestJob
package com.mzsx.spring.quartz; import java.util.Date; public class TestJob { public void execute(){ try{ System.out.println("TestJob:------------:"+new Date()); }catch(Exception ex){ ex.printStackTrace(); } } }
任务二:TestJobTwo
package com.mzsx.spring.quartz; import java.util.Date; public class TestJobTwo { public void execute(){ try{ System.out.println("TestJobTwo:------------:"+new Date()); }catch(Exception ex){ ex.printStackTrace(); } } }
测试类:
package com.mzsx.spring.test; import java.util.Date; import javax.security.auth.Destroyable; import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.mzsx.spring.ClasspathDemo; import com.mzsx.spring.aop.StaticLog; import com.mzsx.spring.contorller.UserContorller; import com.mzsx.spring.el.Cat; import com.mzsx.spring.el.Dog; import com.mzsx.spring.initafter.InitAfter; import com.mzsx.spring.initafter.InitMethodAfter; import com.mzsx.spring.model.Person; import com.mzsx.spring.service.IUserService; public class TestQuartz { @Test public void testQuartz(){ System.out.println("Test start....."+new Date()); ApplicationContext context = new ClassPathXmlApplicationContext("quartz.xml"); try { Thread.sleep(30000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Test end."); } }
结果:
Test start.....Tue Jul 08 14:02:06 CST 2014 2014-7-8 14:02:06 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1ec8909 : startup date [Tue Jul 08 14:02:06 CST 2014]; root of context hierarchy 2014-7-8 14:02:07 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [quartz.xml] 2014-7-8 14:02:07 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@186f247 : defining beans [org.springframework.scheduling.quartz.SchedulerFactoryBean#0,testTrigger,testTriggerTwo,testJobDetail,testJobDetailTwo,testJob,testJobTwo]; root of factory hierarchy 2014-7-8 14:02:07 org.quartz.core.QuartzScheduler <init> 信息: Quartz Scheduler v.1.6.0 created. 2014-7-8 14:02:07 org.quartz.simpl.RAMJobStore initialize 信息: RAMJobStore initialized. 2014-7-8 14:02:07 org.quartz.impl.StdSchedulerFactory instantiate 信息: Quartz scheduler 'org.springframework.scheduling.quartz.SchedulerFactoryBean#0' initialized from an externally provided properties instance. 2014-7-8 14:02:07 org.quartz.impl.StdSchedulerFactory instantiate 信息: Quartz scheduler version: 1.6.0 2014-7-8 14:02:07 org.quartz.core.QuartzScheduler setJobFactory 信息: JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@16ea269 2014-7-8 14:02:07 org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup start 信息: Starting beans in phase 2147483647 2014-7-8 14:02:07 org.springframework.scheduling.quartz.SchedulerFactoryBean startScheduler 信息: Starting Quartz Scheduler now 2014-7-8 14:02:07 org.quartz.core.QuartzScheduler start 信息: Scheduler org.springframework.scheduling.quartz.SchedulerFactoryBean#0_$_NON_CLUSTERED started. TestJob:------------:Tue Jul 08 14:02:08 CST 2014 TestJob:------------:Tue Jul 08 14:02:10 CST 2014 TestJobTwo:------------:Tue Jul 08 14:02:10 CST 2014 TestJob:------------:Tue Jul 08 14:02:12 CST 2014 TestJob:------------:Tue Jul 08 14:02:14 CST 2014 TestJobTwo:------------:Tue Jul 08 14:02:15 CST 2014 TestJob:------------:Tue Jul 08 14:02:16 CST 2014 TestJob:------------:Tue Jul 08 14:02:18 CST 2014 TestJob:------------:Tue Jul 08 14:02:20 CST 2014 TestJobTwo:------------:Tue Jul 08 14:02:20 CST 2014 TestJob:------------:Tue Jul 08 14:02:22 CST 2014 TestJob:------------:Tue Jul 08 14:02:24 CST 2014 TestJobTwo:------------:Tue Jul 08 14:02:25 CST 2014 TestJob:------------:Tue Jul 08 14:02:26 CST 2014 TestJob:------------:Tue Jul 08 14:02:28 CST 2014 TestJob:------------:Tue Jul 08 14:02:30 CST 2014 TestJobTwo:------------:Tue Jul 08 14:02:30 CST 2014 TestJob:------------:Tue Jul 08 14:02:32 CST 2014 TestJob:------------:Tue Jul 08 14:02:34 CST 2014 TestJobTwo:------------:Tue Jul 08 14:02:35 CST 2014 TestJob:------------:Tue Jul 08 14:02:36 CST 2014 Test end.
本文出自 “梦朝思夕” 博客,请务必保留此出处http://qiangmzsx.blog.51cto.com/2052549/1435837
相关文章推荐
- Spring结合Quartz实现多任务定时调用
- Spring结合Quartz实现多任务定时调用
- Spring结合Quartz实现多任务定时调用(转)
- 【转】Spring结合Quartz实现多任务定时调用
- Spring结合Quartz实现多任务定时调用
- Spring结合Quartz实现多任务定时调用
- Spring结合Quartz实现多任务定时调用
- spring结合quartz实现定时任务
- 关于Java Web 使用Spring中使用Quartz(定时调用、实现固定时间执行), 触发定时器(执行某些任务)的实例
- Spring Quartz 实现多任务定时调用
- Spring3.0与Quartz的整合实现定时任务调度
- 简单介绍Spring+Quartz实现定时任务的配置方法
- Spring+Quartz实现定时任务的配置方法
- spring中使用quartz实现定时任务
- Quartz + Spring 简单实现定时任务
- Spring+Quartz实现定时任务的配置方法
- spring使用Quartz实现定时任务
- quartz结合spring轻松实现任务调度
- Quartz结合SPRING多任务定时调用