quartz触发器

http://fanson59.blog.51cto.com/4423877/1272826


所需jar:

quartz-2.2.0.jar

quartz-jobs-2.2.0.jar

slf4j-api-1.7.5.jar

slf4j-log4j12-1.7.5.jar

log4j-1.2.16.jar


Quartz包括五种主要结构用于实现调度:

          Job接口:Job接口表示一个作业(job)。一个作业专注做一件事。它的API非常简洁。只有一个execute方法,该方法在作业被执行时有Quartz调度。该方法有一个JobExecuteContext参数,可以通过该参数给execute()方法传递有用信息。

          JobDetail类 :JobDetail用来描述一个特定Job的信息

          Trigger 抽象类 :Job通过触发器(Trigger)触发。Quartz提供了集中Trigger的实现,如SimpleTrigger和CronTrigger。SimpleTrigger类似一个简单时钟,你可以定义开始是建,结束时间,重复次数,重复周期。CronTrigger的设置可以非常详细

          Scheduler接口 :执行触发器

                           jobPause方法:暂停任务。 

                          triggerJob主要是用于执行一次任务的场景,传入jobKey即可启动该任务     

                          jobResume:恢复任务

                          checkExists:判断任务是否存在,jobKey把jonName和group用.组合起来,作为任务的唯一标志

          SchedulerFactory 接口:SchedulerFactory 用于获得Scheduler实例,可以用于注册作业和触发器


定时执行的任务类,此类需实现Job接口

public class SimpleJob implements Job{

    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        // TODO Auto-generated method stub
        System.out.println("Hello!@"+new Date().toString());
    }

}

定义一个Scheduler,注册触发器和作业:
public class SimpleScheduler {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //SchedulerFactory 用于获得Scheduler实例,可以用于注册作业和触发器。
        SchedulerFactory factory=new StdSchedulerFactory();
        try {
            // 初始化调度器
            Scheduler scheduler=factory.getScheduler();
            // 设置作业,具体操作在SimpleJob类里
            JobDetail jobDetail=JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build();
            // 设置触发器 每5秒执行一次,可以对一个组创建一个 触发器,在该组内的所有Job都将会执行。
            CronTrigger cronTrigger=TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
                    .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
            //job关联一个Trigger,加入scheduler
            scheduler.scheduleJob(jobDetail, cronTrigger);
            //启动触发器
            scheduler.start();
            
        } catch (SchedulerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

quartz和spring进行整合

http://blog.csdn.net/jackfrued/article/details/16918149

作业类可以是普通pojo类,不需要实现任何接口

applicationContext.xml配置文件

<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-2.0.xsd">
    
    <!-- 定义目标bean和bean中的方法 -->
    <bean id="springQuartz" class="quartzJobBean.SpringQuartz"></bean>
    
    <!-- 配置方法调用任务工厂(XXXJobDetailFactoryBean) -->
    <bean id="springQuartzMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
          <property name="targetObject">
                <ref bean="springQuartz"/>
          </property>
          <property name="targetMethod">
                <value>execute</value>
          </property>
    </bean>
    
    <!-- 配置Cron触发器(CronTriggerFactoryBean) -->  
    <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
          <property name="jobDetail" ref="springQuartzMethod"></property>
          <property name="cronExpression" value="0/1 * * * * ?"></property><!--从现在开始,每1秒触发一次-->
    </bean>
    
    <!-- 配置调度器工厂(SchedulerFactoryBean) -->
    <bean id="springSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
          <property name="triggers">
               <list>
                     <ref bean="myJobTrigger"/>
               </list>
          </property>
    </bean>
</beans>


简单触发器开始时间小于当前时间,Misfire策略将任务(JOB)马上执行一次。scheduler不再保存任务信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值