Quartz事物调度



Quartz是什么?

  Quartz是一个用Java编写的任务调度框架。

任务调度是什么?

    举例说明:比如我们需要在每个星期四下午三点时候发周报,我们需要一个系统在两点半的时候给我们一个发周报的提醒,这个提醒就是一次任务,每周星期四下午两点半的时候自动触发这个任务,这就可以理解为这个系统的一次任务调度。在比如我们的系统心跳数据包的发送,判断一个用户是否在操作等等。
    Quartz 提供给我们定时调度已定义好的任务的能力。
    如果你了解quartz的调度计划cronExpression表达式的配置,你会感叹quartz的灵活与强大。
Quartz的简单使用
       
先下只介绍spring 和quartz的整合使用。
一个利用Quartz来进行任务调度的典型配置,Quartz的spring配置:

<bean id="testTask" class="com.alisoft.xx.TestTask" />  //要用到的一个类
<bean id="xxJobDetail"   
   class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
    <property name="concurrent">  
      <value>false</value>  
   </property>  
   <property name="targetObject">  //目标类
      <ref bean="testTask"/>  
   </property>  
<property name="targetMethod">  //目标方法(注意,该方法必须没有参数)
       <value>execute</value>  
   </property>  
</bean>  
<!-- SimpleTriggerBean可以用org.springframework.scheduling.quartz.CronTriggerBean代替 -->  
<bean id="xxTriggerBean" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
<property name="jobDetail">  
      <ref bean="xxJobDetail"/>  
   </property>  
        <!--延迟 1 seconds 开始-->
<property name="startDelay">  
      <value>1000</value>  
   </property> 
       <!--重复6 seconds开始-->
 <property name="repeatInterval">  
     <value>60000</value>  
  </property>  
</bean>  
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
 <property name="triggers">  
      <list>  
         <ref local="xxTriggerBean"/>  
      </list>  
 </property>  
</bean>  


    其实quartz的使用主要有三个部分,一个调度器Scheduler,一个要被调度的任务JobDetail,一个触发器Trigger,对上面的配置做一说明,在图中从下到上:


1、 配置一个job,这个job就是我们要调度的任务类,


2、配置jobDetail,jobDetail需要加载job实现类,并且指定目标方法即完成任务需要执行的方法为execute,在这个方法里面定义我们要做的任务,execute方法需要我们在job类中实现。


3、配置trigger,用于触发我们定义的任务,在触发器的配置中,我们需要加载需要调度的任务jobDetail,当然还要配置好我们需要触发的时间,触发的时间配置在cronExperssion表达式中,这个表达式非常灵活与强大,举个例子:我们需要每个工作日早八点到晚八点之间,每半个小时触发一次任务,我们可以将表达式配置为:0 0/30 8-20 ? * MON-FRI。这个表达式的详细解释可以登录Hudson报表系统(链接:http://10.232.29.21:8080/hudson-report/),点击邮件信息维护里面的“邮件发送时间计划配置帮助”查看。


4、配置scheduler,只需要加载trigger即可,可以在list标签下配置多个trigger。注意,scheduler的配置中有个lazy- init=false的配置,这表明只要我们的spring一启动,quartz的scheduler也跟着启动,否则其值为true的话,会因为惰性加载的问题,导致quartz不起作用,此项默认值是false。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值