初始Quartz框架

1.任务

  任务就是执行工作的内容,Quartz提供Job接口来支持任务定义,JobDetail类是Job接口的实现类

2.触发器

  在Quartz中,触发器Trigger类允许定义触发Job执行的时间触发规则,Trigger有两个实现类,分别为SimpleTrigger和CronTrigger;

  SimpleTrigger主要用于固定时间间隔的调任任务,通过设置触发器的属性:开始时间,结束时间,重复次数,重复间隔等.

  CronTrigger主要用于指定时间点的调度任务,通过定义Cron表达式,例: 0 0/5 15,17 * * ? 的含义是每天的15:00-16:00每5分钟运行一次,此外每天的17:00-18:00每5分钟运行一次

  Cron表达式从左往右的顺序为  秒 分 时 日 月 星期 年 ,其中年可以省略

3.调度器

  Quartz提供了调度器Scheduler类,它是Quartz独立运行的容器,Scheduler可以将Trigger绑定到一个JobDetail上,当Trigger被触发后,一个Job就会被执行了.

下面是简单的示例代码:

 1 package cn.bd.quartz;
 2
 3 /**
 4  *  计划实体类
 5  * @author Administrator
 6  *
 7  */
 8 public class Plan {
 9     private String date;
10     private String task;
11
12
13     public Plan(String date, String task) {
14         super();
15         this.date = date;
16         this.task = task;
17     }
18
19
20     public String getDate() {
21         return date;
22     }
23
24
25     public void setDate(String date) {
26         this.date = date;
27     }
28
29
30     public String getTask() {
31         return task;
32     }
33
34
35     public void setTask(String task) {
36         this.task = task;
37     }
38
39
40     @Override
41     public String toString() {
42         return this.date+":"+this.task;
43     }
44 }

 1 package cn.bd.quartz;
 2
 3 import java.util.ArrayList;
 4 import java.util.List;
 5
 6 /**
 7  * 提醒服务类
 8  * @author Administrator
 9  *
10  */
11 public class RemindService {
12     private String userName;
13     public void setUserName(String userName) {
14         this.userName = userName;
15     }
16
17     public void ouputPlan(String userName){
18         List<Plan> plansForToday=getPlansForToday(userName);
19         System.out.println(userName+"的提醒信息:\n");
20         for(Plan plan : plansForToday){
21             System.out.println(plan+"\n");
22         }
23     }
24
25     private List<Plan> getPlansForToday(String userName) {
26         List<Plan> list=new ArrayList<Plan>();
27         list.add(new Plan("2016-9-9 9:00","研讨会 | 地点 | 会议室Co1"));
28         list.add(new Plan("2016-9-9 9:00","汇报 | 地点 | 总裁办公室"));
29         return list;
30     }
31 }

 1 package cn.bd.quartz;
 2
 3 import org.quartz.Job;
 4 import org.quartz.JobExecutionContext;
 5 import org.quartz.JobExecutionException;
 6
 7 /**
 8  * 提醒任务类
 9  * @author Administrator
10  *
11  */
12 public class RemindJob implements Job{
13     public RemindJob(){
14     }
15     private RemindService remindService;
16
17     @Override
18     public void execute(JobExecutionContext jobContext) throws JobExecutionException {
19         remindService =new RemindService();
20         remindService.ouputPlan("张三");
21     }
22
23
24
25 }

 1 package cn.bd.quartz.test;
 2
 3 import java.text.ParseException;
 4 import java.util.Date;
 5
 6 import org.quartz.CronTrigger;
 7 import org.quartz.JobDetail;
 8 import org.quartz.Scheduler;
 9 import org.quartz.SchedulerException;
10 import org.quartz.SchedulerFactory;
11 import org.quartz.SimpleTrigger;
12 import org.quartz.impl.StdSchedulerFactory;
13
14 import cn.bd.quartz.RemindJob;
15
16 public class TestJob {
17     public void doRemind() throws SchedulerException, InterruptedException, ParseException{
18         //创建一个任务
19         JobDetail job=new JobDetail("remindJob","group1",RemindJob.class);
20
21         //创建一个触发器
22         /*SimpleTrigger simTrig=new SimpleTrigger("trigRemindJob",SimpleTrigger.REPEAT_INDEFINITELY,3000);*/
23         /*simTrig.setStartTime(new Date(System.currentTimeMillis()+1000));*/
24         CronTrigger simTrig=new CronTrigger("remindJob","group1","1/3 * * * * ?");
25
26         //创建一个调度者
27         SchedulerFactory sfc=new StdSchedulerFactory();
28         Scheduler sched=sfc.getScheduler();
29         //注册并进行调度
30         sched.scheduleJob(job,simTrig);
31         sched.start();
32         Thread.sleep(10000);
33         sched.shutdown();
34     }
35
36     public static void main(String[] args) throws SchedulerException, InterruptedException, ParseException {
37         new TestJob().doRemind();
38     }
39 }

时间: 2024-10-19 05:48:21

初始Quartz框架的相关文章

Quartz 框架 教程(中文版)2.2.x

Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架 Quartz 框架 教程(中文版)2.2.x 之第二课 Quartz API,Jobs和Triggers简介 Quartz 框架 教程(中文版)2.2.x 之第三课 更多关于Jobs和JobDetails Quartz 框架 教程(中文版)2.2.x 之第四课 更多关于Triggers Quartz 框架 教程(中文版)2.2.x 之第五课 SimpleTrigger Quartz 框架 教程(中文版)2.2.x

[译]Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架

第一课:开始使用Quartz框架 在你使用调度器之前,需要借助一些具体的例子去理解(谁愿意只是猜啊?).你可以使用SchedulerFactory类来达到程序调度的目的.有一些Quartz框架的用户可能会将factory的实例存储在JNDI中,其他人为了便于举例子就直接使用factory的实例(比如下文的代码片段). 一旦调度器实例化后,它就能够启动,等待执行和关闭.需要注意的是一旦调度器调用了shutdown方法关闭后,如果不重新实例化,它就不会启动了.触发器在调度器未启动时,或是中止状态时,

Quartz框架简介

一.Quartz概述: Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间.其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性.主要用来执行定时任务,如:定时发送信息.定时生成报表等等. 二.相关术语: 三.Quartz的体系结构简介: Quartz框架主要核心组件包括调度器.触发器.作业.调度器作为作业的总指挥,触发器作为作业的操作者,作业为应用的功能模块.其关系如下图所示: Job为作业的接口,为任务调度

JSP中(servlet)如何使用定时作业Quartz框架

以下介绍的是在JSP或者servlet中使用定时作业Quartz框架,这篇文章是我大学第二次实习时写的,当时带我的师傅维护一个旧业务系统时需要定时作业处理,因为我之前大三实习的时候接触过,知道有这么个东西,所以师傅交给我处理,特意给我说让我整理出一个文档来交给他作为以后他的参考,因为之前是在spring中集成的,那比较简单实现,现在让我在JSP中实现,不是想象的那么顺利,利用一晚上搞定了,以下为我为师傅整理的参考文档,特意翻出来和分享给大家: 目录 1.JSP项目中引入4个jar包 1 2.we

spring 基于quartz框架实现定时周期执行

Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.本系统结合通过 Spring 来集成 Quartz . 别忘了spring中的jar包哦 quartz-all.zip 项目中使用到 在网上收集整理了一番 package com.task.quartz; import java.text.SimpleDateFormat; import java.u

Spring+Quartz框架实现定时任务(集群,分布式)

1.定时任务的必要性: 定时任务在应用中的重要性不言而喻,大多是应用,特别是金融应用更是离不开定时任务,能用定时任务来处理异常订单,完成跑批,定时活动(双11)等.在初期应用的访问量并不是那么大,一台服务器完全满足使用,但是随着用户量.业务量的逐日增加,应用中会有很多定时任务需要执行,一台服务器已经不能满足使用,因此需要把应用给部署到集群中,前端通过nginx代理实现访问. 2.集群使用定时任务的问题:目前大部分在集群中处理定时任务的方式不是正真的分布式处理方式,而是一种伪分布式,这种方式存在一

java 框架-spring 整合 quartz 框架 service层 注入不了job 类

    1.  spring  + quartz  启动 停止 添加job 功能  一 maven添加quartz  的jar 二 代码区 applicationContext.xml  导入 quartz.xml   <import resource="classpath:spring/quartz.xml"/> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns

Spring整合Quartz框架实现定时任务跑批(Maven完整版)

Quartz 介绍Quartz is a full-featured, open source job scheduling service that can be integrated with, or used along side virtually any Java application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to

Quartz学习总结(1)——Spring集成Quartz框架

一.Quartz简介 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序.Jobs可以做成标准的Java组件或 EJBs.Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz 允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和触发器的多对多关系,