定时任务框架Quartz浅谈

       还没接触Quartz前,主要是用到java的Timer和TimerTask实现定时任务,一个web程序后台定时执行某个任务时,首先想到是使用监听器随容器一起启动,执行方法的任务的类继承TimerTask,在run方法中定义要执行的操作,在监听器中执行定时器的schedule方法,定义任务的执行间隔。

        随后接触的Quartz框架,使用者只需要专注于任务的编写,学习起来也非常容易,Quartz原理不是很复杂,主要是以下几个概念:

    Job表示一个工作

          JobDetail具体的可执行的任务调度

          Trigger调度参数的配置

          Scheduler调度容器

简单的入门实例  首先导入quartz-2.2.0.jar和slf4j-api-1.6.6.jar,slf4j-log4j12-1.6.6.jar

         MyJob.java

public class MyJob implements Job{
       //定时执行的任务
     public void execute(JobExecutionContext jobExecutionContext)throws JobExeceptionException{
       System.out.println("welcome to....."+new Date());
	}
}
         TestJob.java

public class TestJob{

public static void main(String args[]) {

try {

//1创建一个JobDetail实例,指定MyJob

JobDetail jobDetail = new JobDetail("job1_1","jGroup1", MyJob.class);

//2通过SimpleTrigger定义调度规则:马上启动,每2秒运行一次,共运行100次

SimpleTrigger simpleTrigger = new SimpleTrigger("trigger1_1","tgroup1");

simpleTrigger.setStartTime(new Date());

simpleTrigger.setRepeatInterval(2000);

simpleTrigger.setRepeatCount(100);

//3通过SchedulerFactory获取一个调度器实例

SchedulerFactory schedulerFactory = new StdSchedulerFactory();

Scheduler scheduler = schedulerFactory.getScheduler();

scheduler.scheduleJob(jobDetail, simpleTrigger);//④ 注册并进行调度

scheduler.start();//⑤调度启动

} catch (Exception e) {

e.printStackTrace();

}

}

}
          spring与Quartz的整合

加入包的依赖  

<!--quartz-->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>1.8.5</version>
        </dependency>
	<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.8</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.5.8</version>
        </dependency>
        web.xml中引入applicationContext-scheduler.xml

       <!-- context-param section begin -->
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext-*.xml</param-value>
 </context-param>
             编写任务的service方法

        在applicationContext-scheduler.xml主要配置

<bean id="deletePassCars" class="com.tollgate.quartz.base.deletepasscars.DeletePasscars"/><!--定义执行的任务service-->
<bean id="deletePassCarsJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
	   <property name="concurrent">  
	    <value>false</value>  
	   </property>  
           <!--定义目标执行的任务service-->	      
           <property name="targetObject">  
	        <ref bean="deletePassCars"/>
            </property>	
           <!--定义service中执行的方法-->	
	   <property name="targetMethod">  
	        <value>delete</value>  
	    </property>  
	</bean> 

 <!--配置调度参数-->	  
<bean id="deletePassCarsTriggerBean" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  	    
              <!--执行的具体任务-->	  
	    <property name="jobDetail">  
	        <ref bean="deletePassCarsJobDetail"/>  
	    </property>  
            <!--执行的间隔-->	  	
	    <property name="startDelay"><value>5000</value></property>      
            <!--总共执行多少次停止-->	   
	    <property name="repeatInterval"><value>86400000</value></property></bean>  
	<!--   执行任务  -->
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
	    <property name="triggers">  
	        <list>
		 <ref local="deletePassCarsTriggerBean"/>
	        </list> 
	    </property>  
	</bean> 


配置完成,启动容器,定时任务也随之启动了,使用起来非常方便。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值