quartz分布式定时任务

1.依赖
 
            org.quartz-scheduler
            quartz
            2.2.1
       
2.application.xml
   
3.job.xml

   
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jsf="http://jsf.jd.com/schema/jsf"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://jsf.jd.com/schema/jsf http://jsf.jd.com/schema/jsf/jsf.xsd">

   
       
           
       
         
            doExecute
       
   

   
   
       
       
   


   
   
       
           
               
           
       
   


4.测试类@Component
public class Pending {
    public void doExecute(){
        System.out.println("quartz测试");
    }
}

5.说明:

1、从代码上来看,有XxxBuilder、XxxFactory,说明Quartz用到了Builder、Factory模式,还有非常易懂的链式编程风格。

2、Quartz有3个核心概念:调度器(Scheduler)、任务(Job&JobDetail)、触发器(Trigger)。(一个任务可以被多个触发器触发,一个触发器只能触发一个任务)

3、注意当Scheduler调度Job时,实际上会通过反射newInstance一个新的Job实例(待调度完毕后销毁掉),同时会把JobExecutionContext传递给Job的execute方法,Job实例通过JobExecutionContext访问到Quartz运行时的环境以及Job本身的明细数据。

4、JobDataMap可以装载任何可以序列化的数据,存取很方便。需要注意的是JobDetail和Trigger都可以各自关联上JobDataMap。JobDataMap除了可以通过上述代码获取外,还可以在YourJob实现类中,添加相应setter方法获取。

5、Trigger用来告诉Quartz调度程序什么时候执行,常用的触发器有2种:SimpleTrigger(类似于Timer)、CronTrigger(类似于Linux的Crontab)。

6、实际上,Quartz在进行调度器初始化的时候,会加载quartz.properties文件进行一些属性的设置,比如Quartz后台线程池的属性(threadCount)、作业存储设置等。它会先从工程中找,如果找不到那么就是用quartz.jar中的默认的quartz.properties文件。

7、Quartz存在监听器的概念,比如任务执行前后、任务的添加等,可以方便实现任务的监控。

Quartz的体系结构

quartz分布式定时任务_第1张图片

这里给出一些常用的示例:

0 15 10 ? * 每天10点15分触发

0 15 10 ? 2017 2017年每天10点15分触发

0 14 * ? 每天下午的 2点到2点59分每分触发

0 0/5 14 ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)

0 0/5 14,18 ? 每天下午的 2点到2点59分、18点到18点59分(整点开始,每隔5分触发)

0 0-5 14 ? 每天下午的 2点到2点05分每分触发

0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发

0 15 10 ? * 6#3 每月的第三周的星期五开始触发

参考文档:http://blog.51cto.com/zhangfengzhe/2064092
   

你可能感兴趣的:(quartz分布式定时任务)