Quartz快速入门

1.下载地址http://www.quartz-scheduler.org/downloads/
写此文章时的最新版是2.2.1。

2.解压缩将基本包quartz-2.2.1.jar放到工程中,如果你工程中连log4j都没有的话,那就把日志相关的几个jar包一起放到工程中。
 
3.配置
创建quartz.properties文件
org.quartz.scheduler.instanceName = MyScheduler---------scheduler的名字,随便起一个名字(还是起个有点意义的名字吧)
org.quartz.threadPool.threadCount= 3 --------线程池中最大线程数是3(最多三个job同时执行)
org.quartz.scheduler.skipUpdateCheck = true
---跳过Quartz的自动更新检查
配置参考:http://quartz-scheduler.org/documentation/quartz-2.x/configuration
4.一下是代码了,为了方便将官方的代码靠过来稍作修改,代码里有标明。
 1 import org.quartz.Scheduler;
 2 import org.quartz.SchedulerException;
 3 import org.quartz.impl.StdSchedulerFactory;
 4
 5 publicclassQuartzTest{
 6
 7     publicstaticvoid main(String[] args){
 8
 9         try{
10             // Grab the Scheduler instance from the Factory
11             //初始化scheduler,官方文档使用的后面的内容,所有配置都是默认值,为了使用我们辛苦配置的配置文件,我们用前面的方法。
12             Scheduler scheduler = new StdSchedulerFactory("quartz.properties").getScheduler();//StdSchedulerFactory.getDefaultScheduler();
13
14             // and start it off
15             scheduler.start();
16             //---------------插入执行的代码--------------------------
17             scheduler.shutdown();
18
19         }catch(SchedulerException se){
20             se.printStackTrace();
21         }
22     }
23 }

(以上参考http://quartz-scheduler.org/overview/quick-start)

以上代码就可以执行了,不过什么都没干,只是启动了和关闭了一下。- - !
5. do something
要do sth需要Job,Trigger这些都是Quartz里的基本元素。看名字也能明白Job是干活的蓝领。Trigger是触发Job执行的,定时任务最关键的时间就是靠定义Trigger是定义的。
创建Job
新建一个类实现Job接口并写execute方法实现。

 1 import java.util.Date;
 2
 3 import org.apache.log4j.Logger;
 4 import org.quartz.Job;
 5 import org.quartz.JobExecutionContext;
 6 import org.quartz.JobExecutionException;
 7
 8 public class JobTest implements Job{
 9
10     private static Logger logger = Logger.getLogger(JobTest.class);
11
12     public void execute(JobExecutionContext arg0) throws JobExecutionException {
13         logger.info("Hello world-----myQuartz-------class:JobTest  method:execute" + new Date());
14
15     }
16
17 }
18 然后,在第4步-----插入执行的代码-------的位置插入以下代码
19     try {
20             //定义一个任务,并绑定JobTest(自己创建的任务类)
21             JobBuilder jobBuilder = JobBuilder.newJob(JobTest.class);
22             jobBuilder.withIdentity("Job1", "Group1");
23
24             JobDetail job = jobBuilder.build();
25                     //定义一个触发任务执行的触发器
26             TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger();
27             triggerBuilder.withIdentity("Trigger1", "TriggerGroup1");
28             //定义执行时间
29             Date runTime = DateBuilder.evenSecondDate(new Date());
30
31             triggerBuilder.startAt(runTime);
32             triggerBuilder.withSchedule(SimpleScheduleBuilder.simpleSchedule().
33                     withIntervalInMilliseconds(10000).repeatForever());
34
35             Trigger trigger = triggerBuilder.build();
36
37                      scheduler.scheduleJob(job, trigger);
38             logger.info(job.getKey() + " will run at...: " + runTime);
39             scheduler.start();
40             logger.info("------- Started Scheduler -----------------");
41
42             logger.info("------- Waiting 65 seconds... -------------");
43             try {
44                 Thread.sleep(65000);
45             } catch (InterruptedException e) {
46                 e.printStackTrace();
47             }
48             logger.info("------- Shutting Down ---------------------");
49             scheduler.shutdown();
50             logger.info("------- Shutdown Complete -----------------");
51         } catch (SchedulerException e) {
52             e.printStackTrace();
53         }

View Code

汗!可算写完了,这么长。最好弄个Util工具类
一下是我写的工具类,主要实现job和trigger的创建,大家借鉴:
 

 1 import java.util.Date;
 2
 3 import org.quartz.Job;
 4 import org.quartz.JobBuilder;
 5 import org.quartz.JobDetail;
 6 import org.quartz.Scheduler;
 7 import org.quartz.SchedulerException;
 8 import org.quartz.SimpleScheduleBuilder;
 9 import org.quartz.Trigger;
10 import org.quartz.TriggerBuilder;
11 import org.quartz.impl.StdSchedulerFactory;
12
13 /**
14  * 定时任务工具类
15  * @author llhua
16  *
17  */
18 public class TaskUtil {
19 /**
20 * 初始化一个全部默认配置的scheduler
21 * @return
22 * @throws SchedulerException
23 */
24 public static Scheduler getDefaultScheduler() throws SchedulerException{
25 return StdSchedulerFactory.getDefaultScheduler();
26 }
27
28 /**
29 * 初始化一个通过配置文件配置的配置的scheduler
30 * @return
31 * @throws SchedulerException
32 */
33 public static Scheduler getScheduler(String confFile) throws SchedulerException{
34 return new StdSchedulerFactory(confFile).getScheduler();
35 }
36
37 /**
38 * 定义一个job
39 * @param jobClazz
40 * @param name
41 * @param group
42 * @return
43 */
44 public static JobDetail getJob(Class<? extends Job> jobClazz, String name, String group){
45 return JobBuilder.newJob(jobClazz).withIdentity(name, group).build();
46 }
47
48 /**
49 * 定义一个立即开始的触发器(.startNow())
50 * @param schedBuilder
51 * @param name
52 * @param group
53 * @return
54 *
55 * SimpleScheduleBuilder一般用法
56 * SimpleScheduleBuilder.simpleSchedule().
57 withIntervalInMilliseconds(10000).repeatForever()
58 */
59 public static Trigger getSimpleTrigger(SimpleScheduleBuilder schedBuilder, String name, String group){
60 return TriggerBuilder.newTrigger().withIdentity(name, group).startNow().withSchedule(schedBuilder).build();
61 }
62 /**
63 * 定义一个在指定时间开始的触发器(.startAt())
64 * @param schedBuilder
65 * @param name
66 * @param group
67 * @return
68 */
69 public static Trigger getSimpleTrigger(Date runTime, SimpleScheduleBuilder schedBuilder, String name, String group){
70 return TriggerBuilder.newTrigger().withIdentity(name, group).startAt(runTime).withSchedule(schedBuilder).build();
71 }
72
73 public static Trigger getCronTrigger(){
74 return null;
75 }
76
77 public static Trigger getNthIncludedDayTrigger(){
78 return null;
79 }
80
81 }

View Code

说明:最下面有三个get Trigger的方法代表了Quartz中已经有的三种Trigger,简单的已经可以实现基本的应用了,如有复杂应用可以实现下面两种。在下目前还没用到。

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/llhua/p/3393306.html

Quartz快速入门相关推荐

  1. Java任务调度之Quartz快速入门

    首先所谓的任务调度指的是软件系统在从某个时间节点开始,以固定的频率,除去特定的某些时间段,定期执行某项任务,比如可以在某个夜深人静的时候做一些大批量的文件传输.备份等耗费极大资源的工作,那么通过这个概 ...

  2. Quartz 快速入门案例,看这一篇就够了

    前言 Quartz 是基于 Java 实现的任务调度框架,对任务的创建.修改.删除.触发以及监控这些操作直接提供了 api,这意味着开发人员拥有最大的操作权,也带来了更高的灵活性. 什么是任务调度? ...

  3. Quartz教程:快速入门

    本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣研究源码的同学,可以参考我对quartz-core ...

  4. Quartz 框架快速入门(二)

    尽可能的用声明式处理软件配置,其次才考虑编程式的方式.在上一篇<Quartz 框架快速入门(一)>中,如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译.这种方 ...

  5. Quartz-任务调度概述及Quartz(2.2.X)快速入门

    文章目录 概述 Quartz 概述 Quartz 基础结构 Job JobDetail Trigger Calendar Scheduler ThreadPool 注意 快速入门 Quartz(2.2 ...

  6. Quartz 框架快速入门(四)

    Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何QuartSpring的代码就可以实现定时任务.Spring通过JobDetailBean,Met ...

  7. Quartz 框架快速入门(三)

    在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Schedul ...

  8. Quartz.NET快速入门指南

    最近,在工作中遇到了 Quartz.net 这个组件,为了更好的理解项目代码的来龙去脉,于是决定好好的研究一下这个东西.确实是好东西,既然是好东西,我就拿出来分享一下.万丈高楼平地起,我们也从入门开始 ...

  9. Spring Schedule定时关单快速入门

    首先讲一下Spring Schedule的一个介绍,然后是Spring Schedule的一个快速入门,这里面我们会列一个表格,然后领着大家来看一下,然后是Spring Schedule Cron的生 ...

最新文章

  1. iOS 11开发教程(二)编写第一个iOS 11应用
  2. 南开大学2014年高等代数部分试题解答
  3. Apache Hook机制解析(下)——实战:在自己的代码中使用Apache的钩子
  4. JAVA设计模式详解(六)----------状态模式
  5. 为什么大数据需要数据湖?
  6. 【Python 2 到 3 系列】 print 是函数
  7. update yum 到指定版本_linux yum安装指定版本mysql或php
  8. 51nod 1632 B君的连通
  9. matlab mat文件 太大,MATLAB .mat文件中的开销过大
  10. git pull VS git fetchmerge(good)
  11. python基础篇 —— 类
  12. 获取并反编译微信小程序源码(仅供学习)
  13. STM32控制SG90舵机与超声波HC_SR04测距模块
  14. kuka机器人码垛编程网盘_kuka机器人循环指令码垛编程探索
  15. Android 全仿To圈儿录音界面实现
  16. 易基因 | 精准医学:DNA甲基化图谱在发现和精确诊断神经肿瘤领域的应用
  17. 用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)
  18. 2020年Apple的UWB技术产品资料整理
  19. 中国尼龙搭扣市场趋势报告、技术动态创新及市场预测
  20. 计算机毕业设计(附源码)python学生社团管理

热门文章

  1. java 空间复杂度_时间复杂度和空间复杂度
  2. java解码base64的png图片_使用PHP对图片进行base64编码和解码(png、jpg,声音、视频)...
  3. 思科交换机Vlan配置以及VLAN应用场景
  4. oracle中匹配函数怎么用,ORACLE 使用正则表达式的函数
  5. 拦截锚点修改url_前端系列课程(2)-网络基础概念(URL)
  6. docker 安装nginx_使用 Docker 在你的 mac 上搭建个服务器
  7. seaborn常用图
  8. kaggle和colab入门
  9. java jdom格式_Java全面解析XML格式串(JDOM解析)
  10. mkfontscale没有这个命令_那些实用的小命令