Quartz 中的任务开始、暂停和继续

Quartz 中的任务开始、暂停和继续

第一个TASK:
package com.paul.springbatchtest.tasklet;

import org.quartz.SchedulerException;

public class TaskOne {
   
   
   
public void execue() throws SchedulerException
   
{
        System.out.println(
"Hello Spring Schedule!"  + Thread.currentThread().getName());
    }


}

第二个TASK用来恢复第一个TASK的:
package com.paul.springbatchtest.tasklet;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;

public class DailyTask {
   
   
private Scheduler scheduler;
   
private CronTrigger taskOneCronTrigger;
   
private JobDetail taskOneJobDetail;
   
   
public void execue() throws SchedulerException
   
{
        System.out.println(
"Start taskOneCronTrigger in DailyTask " + Thread.currentThread().getName());
        scheduler.addJob(taskOneJobDetail,
true);
        scheduler.scheduleJob(taskOneCronTrigger);
    }


   
public Scheduler getScheduler() {
       
return scheduler;
    }


   
public void setScheduler(Scheduler scheduler) {
       
this.scheduler = scheduler;
    }


   
public CronTrigger getTaskOneCronTrigger() {
       
return taskOneCronTrigger;
    }


   
public void setTaskOneCronTrigger(CronTrigger taskOneCronTrigger) {
       
this.taskOneCronTrigger = taskOneCronTrigger;
    }


   
public JobDetail getTaskOneJobDetail() {
       
return taskOneJobDetail;
    }


   
public void setTaskOneJobDetail(JobDetail taskOneJobDetail) {
       
this.taskOneJobDetail = taskOneJobDetail;
    }


}


第三个TASK,用来暂停第一个TASK的:
package com.paul.springbatchtest.tasklet;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class StopTaskOne implements ApplicationContextAware {
   
   
private ApplicationContext applicationContext;
   
   
private Scheduler scheduler;
   
private CronTrigger taskOneCronTrigger;
   
private JobDetail taskOneJobDetail;
   
   
public void execue() throws SchedulerException
   
{
        System.out.println(
"Stop Task One in " + Thread.currentThread().getName());
        scheduler
= (Scheduler)this.applicationContext.getBean("scheduler");
        scheduler.unscheduleJob(taskOneCronTrigger.getName(), taskOneCronTrigger.getGroup());
    }


   
public CronTrigger getTaskOneCronTrigger() {
       
return taskOneCronTrigger;
    }


   
public void setTaskOneCronTrigger(CronTrigger taskOneCronTrigger) {
       
this.taskOneCronTrigger = taskOneCronTrigger;
    }


   
public JobDetail getTaskOneJobDetail() {
       
return taskOneJobDetail;
    }


   
public void setTaskOneJobDetail(JobDetail taskOneJobDetail) {
       
this.taskOneJobDetail = taskOneJobDetail;
    }



   
public Scheduler getScheduler() {
       
return scheduler;
    }


   
public void setScheduler(Scheduler scheduler) {
       
this.scheduler = scheduler;
    }


    @Override
   
public void setApplicationContext(ApplicationContext applicationContext)
           
throws BeansException {
       
this.applicationContext = applicationContext;
    }

}


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  id ="executor"  class ="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
        
< property  name ="corePoolSize"  value ="10"   />
        
< property  name ="maxPoolSize"  value ="100"   />
        
< property  name ="queueCapacity"  value ="500"   />
    
</ bean >
    
    
< bean  id ="taskOne"  class ="com.paul.springbatchtest.tasklet.TaskOne"   />

    
< bean  id ="taskOneJobDetail"  class ="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
        
< property  name ="targetObject"  ref ="taskOne"   />
        
< property  name ="targetMethod"  value ="execue"   />
        
< property  name ="concurrent"  value ="false"   />
    
</ bean >

    
< bean  id ="taskOneCronTrigger"  class ="org.springframework.scheduling.quartz.CronTriggerBean" >
        
< property  name ="jobDetail"  ref ="taskOneJobDetail"   />
        
< property  name ="cronExpression"  value ="0/1 * * * * ?"   />
    
</ bean >
    
    
<!--    -->
    
    
< bean  id ="dailyTask"  class ="com.paul.springbatchtest.tasklet.DailyTask"    >
        
< property  name ="scheduler"  ref ="scheduler"   />
        
< property  name ="taskOneCronTrigger"  ref ="taskOneCronTrigger"   />
        
< property  name ="taskOneJobDetail"  ref ="taskOneJobDetail"   />
    
</ bean >

    
< bean  id ="dailyJobDetail"  class ="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
        
< property  name ="targetObject"  ref ="dailyTask"   />
        
< property  name ="targetMethod"  value ="execue"   />
        
< property  name ="concurrent"  value ="false"   />
    
</ bean >

    
< bean  id ="dailyCronTrigger"  class ="org.springframework.scheduling.quartz.CronTriggerBean" >
        
< property  name ="jobDetail"  ref ="dailyJobDetail"   />
        
< property  name ="cronExpression"  value ="0/15 * * * * ?"   />
    
</ bean >
    
    
<!--    -->
    
    
    
< bean  id ="stopTaskOne"  class ="com.paul.springbatchtest.tasklet.StopTaskOne"   >
        
< property  name ="taskOneCronTrigger"  ref ="taskOneCronTrigger"   />
        
<!--  <property name="scheduler" ref="scheduler" />  -->
        
< property  name ="taskOneJobDetail"  ref ="taskOneJobDetail"   />
    
</ bean >

    
< bean  id ="stopTaskOneJobDetail"  class ="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
        
< property  name ="targetObject"  ref ="stopTaskOne"   />
        
< property  name ="targetMethod"  value ="execue"   />
        
< property  name ="concurrent"  value ="false"   />
    
</ bean >

    
< bean  id ="stopTaskOneCronTrigger"  class ="org.springframework.scheduling.quartz.CronTriggerBean" >
        
< property  name ="jobDetail"  ref ="stopTaskOneJobDetail"   />
        
< property  name ="cronExpression"  value ="10,25,40,55 * * * * ?"   />
    
</ bean >   <!--   -->

    
< bean  id ="scheduler"
        class
="org.springframework.scheduling.quartz.SchedulerFactoryBean"   >
        
< property  name ="triggers" >
            
< list >
                
<!--  <ref bean="taskOneCronTrigger" />  -->
                
< ref  bean ="dailyCronTrigger"   />
                
< ref  bean ="stopTaskOneCronTrigger" />
            
</ list >
        
</ property >
        
< property  name ="taskExecutor"  ref ="executor"   />
    
</ bean >

</ beans >


MAVEN的POM文件:
< project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
   
< modelVersion > 4.0.0 </ modelVersion >

   
< groupId > com.paul </ groupId >
   
< artifactId > springbatchtest </ artifactId >
   
< version > 1.0 </ version >
   
< packaging > jar </ packaging >

   
< name > springbatchtest </ name >
   
< url > http://maven.apache.org </ url >

   
< properties >
       
< project .build.sourceEncoding > UTF-8 </ project.build.sourceEncoding >
       
< spring .batch.version >
            2.1.8.RELEASE
       
</ spring.batch.version >
       
< maven .compiler.source > 1.6 </ maven.compiler.source >
       
< maven .compiler.target > 1.6 </ maven.compiler.target >
       
< spring .version > 3.0.5.RELEASE </ spring.version >
   
</ properties >
   
< dependencies >
       
< dependency >
           
< groupId > org.springframework.batch </ groupId >
           
< artifactId > spring-batch-core </ artifactId >
           
< version > ${spring.batch.version} </ version >
           
< exclusions >
               
< exclusion >
                   
< groupId > commons-logging </ groupId >
                   
< artifactId > commons-logging </ artifactId >
               
</ exclusion >
           
</ exclusions >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework.batch </ groupId >
           
< artifactId > spring-batch-infrastructure </ artifactId >
           
< version > ${spring.batch.version} </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework.batch </ groupId >
           
< artifactId > spring-batch-test </ artifactId >
           
< version > ${spring.batch.version} </ version >
           
< scope > test </ scope >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework </ groupId >
           
< artifactId > spring-beans </ artifactId >
           
< version > ${spring.version} </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework </ groupId >
           
< artifactId > spring-context </ artifactId >
           
< version > ${spring.version} </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework </ groupId >
           
< artifactId > spring-core </ artifactId >
           
< version > ${spring.version} </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework </ groupId >
           
< artifactId > spring-jdbc </ artifactId >
           
< version > ${spring.version} </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework </ groupId >
           
< artifactId > spring-tx </ artifactId >
           
< version > ${spring.version} </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.slf4j </ groupId >
           
< artifactId > slf4j-api </ artifactId >
           
< version > 1.6.1 </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.slf4j </ groupId >
           
< artifactId > jcl-over-slf4j </ artifactId >
           
< version > 1.6.1 </ version >
       
</ dependency >
       
< dependency >
           
< groupId > ch.qos.logback </ groupId >
           
< artifactId > logback-classic </ artifactId >
           
< version > 0.9.29 </ version >
       
</ dependency >
       
< dependency >
           
< groupId > commons-io </ groupId >
           
< artifactId > commons-io </ artifactId >
           
< version > 2.0.1 </ version >
       
</ dependency >
       
< dependency >
           
< groupId > com.h2database </ groupId >
           
< artifactId > h2 </ artifactId >
           
< version > 1.3.168 </ version >
       
</ dependency >
       
< dependency >
           
< groupId > junit </ groupId >
           
< artifactId > junit </ artifactId >
           
< version > 4.8.2 </ version >
           
< scope > test </ scope >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework </ groupId >
           
< artifactId > spring-test </ artifactId >
           
< version > ${spring.version} </ version >
           
< scope > test </ scope >
       
</ dependency >
       
< dependency >
           
< groupId > javax.mail </ groupId >
           
< artifactId > mail </ artifactId >
           
< version > 1.4.1 </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.springframework </ groupId >
           
< artifactId > spring-context-support </ artifactId >
           
< version > ${spring.version} </ version >
       
</ dependency >
       
<!-- <dependency>
            <groupId>org.opensymphony.quartz</groupId>
            <artifactId>quartz</artifactId>
            <version>1.6.1</version>
        </dependency>
-->
       
< dependency >
           
< groupId > mysql </ groupId >
           
< artifactId > mysql-connector-java </ artifactId >
           
< version > 5.1.21 </ version >
       
</ dependency >
       
< dependency >
           
< groupId > org.quartz-scheduler </ groupId >
           
< artifactId > quartz </ artifactId >
           
< version > 1.8.4 </ version >
       
</ dependency >
   
</ dependencies >
</ project >


测试文件:
package com.paul.springbatch.test;

import junit.framework.Assert;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.
class )
@ContextConfiguration(locations
= { "/schedule/quartz.xml"} )
public class QuartzTaskOneTest {
   

   
    @Test
   
public void simpleTest() throws Exception{
       
       
while(true)
       
{
            Assert.assertTrue(
true);
        }

    }

}

posted on 2012-10-13 16:18 paulwong 阅读(3001) 评论(1)  编辑  收藏 所属分类: SRPING BATCH

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值