Quartz介绍和使用
// 6、工厂模式,组装各个组件<JOB,Trigger> sched.scheduleJob(job, trigger);
package quartz; import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import java.util.Date; /**
* Created by drubber on 2017/11/23.
* @author drubber
*/
public class HelloJob implements Job { private Logger logger = Logger.getLogger(HelloJob.class); public HelloJob() {
} @Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDetail detail = context.getJobDetail();
String name = detail.getJobDataMap().getString("name");
logger.info("say hello to " + name + " at " + new Date());
System.out.println("---------------end----------------");
}
}
HelloJob
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency> <dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
pom.xml
package quartz; import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import java.util.Date; /**
* Created by drubber on 2017/11/23.
* @author drubber
*/
public class HelloJob implements Job { private Logger logger = Logger.getLogger(HelloJob.class); public HelloJob() {
} @Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDetail detail = context.getJobDetail();
String name = detail.getJobDataMap().getString("name");
logger.info("say hello to " + name + " at " + new Date());
System.out.println("---------------end----------------");
}
}
HelloJob
package quartz; import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.util.Log4jConfigurer; import java.io.FileNotFoundException;
import java.util.Date; import static org.quartz.DateBuilder.evenMinuteDate;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.TriggerBuilder.newTrigger; /**
* 此Demo将演示如何启动和关闭Quartz调度器,以及如何运作
* Created by drubber on 2017/11/23.
*
* @author drubber
*/ public class QuartzExample { private Logger log = Logger.getLogger(QuartzExample.class); public QuartzExample() { } @Before
public void initLog4j(){
try {
Log4jConfigurer.initLogging("classpath:config/log4j.properties");
} catch (FileNotFoundException e) {
System.err.println("Cannot Initialize Log4j !!!!!!");
}
} @Test
public void run() throws Exception { log.info("------- Initializing ----------------------"); // 1、工厂模式 构建Scheduler的Factory\
// 2、其中StdSchedulerFactory 为Quartz默认的Factory,默认加载quartz.properties,开发者亦可自行实现自己的Factory;Job、Trigger等组件
SchedulerFactory sf = new StdSchedulerFactory();
// 2、通过SchedulerFactory获得Scheduler对象
Scheduler sched = sf.getScheduler(); log.info("------- Initializing Complete -----------------"); // 3、org.quartz.DateBuilder.evenMinuteDate <下一分钟> -- 通过DateBuilder构建Date
//Date runTime = evenMinuteDate(new Date());
Date runTime = new Date(); log.info("------- Scheduling Job -------------------"); // 4、org.quartz.JobBuilder.newJob --通过JobBuilder构建Job
JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
//设置参数
job.getJobDataMap().put("name","drubber_ceshi"); // 5、通过TriggerBuilder进行构建
//Trigger trigger = getTrigger(runTime,"simple");
Trigger trigger = getTrigger(runTime,"cron"); // 6、工厂模式,组装各个组件<JOB,Trigger>
sched.scheduleJob(job, trigger); // [group1.job1] will run at:
log.info(job.getKey() + " will run at: " + runTime); //7、start
sched.start();
log.info("------------Started Scheduler-----------"); Thread.sleep(10 * 1000L);
log.info("-------wait 10 seconds ------"); // shut down the scheduler
log.info("------- Shutting Down ---------------------");
// 8、通过Scheduler销毁内置的Trigger和Job
sched.shutdown(true);
log.info("------- Shutdown Complete -----------------");
} private Trigger getTrigger(Date runTime, String type) {
Trigger trigger = null;
if (type.equals("simple")) {
//使用simpleTrigger 每秒执行一次 一直循环 只到关闭sched
trigger = newTrigger().withIdentity("trigger1", "group1")
.startAt(runTime)
.withSchedule(simpleSchedule()
.withIntervalInSeconds(1)
.repeatForever())
.build();
} else if (type.equals("cron")) {
//使用CronTrigger 每2秒执行一次 一直循环 只到关闭sched
trigger = newTrigger().withIdentity("trigger1", "group1")
.startAt(runTime)
.withSchedule(cronSchedule("*/2 * * * * ? *"))
.build();
}else{
//TODO
} return trigger;
} }
QuartzExample
Quartz介绍和使用的更多相关文章
- quartz介绍
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.本 ...
- 170412、Spring Boot Quartz介绍
(1)什么是Quartz? (2)Quartz的特点: (3)Quartz专用词汇说明: (4)Quartz任务调度基本实现原理: 接下来看下具体的内容: (1)什么是Quartz? Quartz是一 ...
- Quartz任务调度基本使用
转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html 上一篇:定时器的实现.Java定时器Timer和Quartz介绍 ...
- quartz简单实现
quartz介绍 在我们的项目中,经常会遇到某个任务需要在特定的时间点执行,这个时间点可能是每天的某分某秒,可能是一周的指定某个星期某个时间等:quartz就是实现这样一个复杂任务调度逻辑的框架. 官 ...
- JAVAEE——BOS物流项目13:Quartz概述、创建定时任务、使用JavaMail发送邮件、HighCharts概述、实现区域分区分布图
1 学习计划 1.Quartz概述 n Quartz介绍和下载 n 入门案例 n Quartz执行流程 n cron表达式 2.在BOS项目中使用Quartz创建定时任务 3.在BOS项目中使用Jav ...
- 项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度
前言 系列文章:[传送门] 项目需求: http://www.cnblogs.com/Alandre/p/3733249.html 上一博客写的是基本调度,后来这只能用于,像每天定个时间 进行数据库备 ...
- 项目ITP(五) spring4.0 整合 Quartz 实现任务调度
前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了 ...
- Spring+Quartz 实现定时任务的配置方法
Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...
- Spring+Quartz配置定时任务
一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是出了名的任务调度框架,它可以与J2SE和J2EE应用程序相结合 ...
随机推荐
- Lucene倒排索引结构及关系
- Simula-Virtual function
Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the ...
- day07 分支,循环
目录 if(分支) if的语法 if...else... if...elif...else if的嵌套 for循环 for-else 语句 for循环的嵌套(重要) range介绍 while循环 w ...
- LayUI中select下拉框选中触发事件
代码: var form = layui.form, layer = layui.layer; // 监听 $(document).ready(function() { // select下拉框选中触 ...
- loging模块
logging模块 什么是logging模块 logging模块是python提供的用于记录日志的模块 为什么需要logging 我们完全可以自己打开文件然后,日志写进去,但是这些操作重复且没有任何技 ...
- Test zram at kernel 3.10 4.12
Use ltp to test zram 测试环境: #uname -r 3.10.0-327.ali2010.rc6.alios7.x86_64 没有指定zram algorithm(没有设置), ...
- [置顶]
献给写作者的 Markdown 新手指南
作者:http://jianshu.io/p/q81RER 出处:http://jianshu.io/p/q81RER 献给写作者的 Markdown 新手指南 简书 「简书」作为一款「写作软件」在诞 ...
- 如何设置,获取,删除cookie?
cookie : 存储数据,当用户访问了某个网站(网页)的时候,我们就可以通过cookie来像访问者电脑上存储数据 1.不同的浏览器存放的cookie位置不一样,也是不能通用的 2.cookie的存储 ...
- BZOJ 5180 [Baltic2016]Cities(斯坦纳树)
斯坦纳树的板子题. 斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种. 最小生成树是在给定的点集和边中寻求最短网络使所有点连通. 而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网 ...
- php5 中魔术方法函数有哪几个
魔术函数:9.3 构造函数:__construct() 9.3.1 实例化对象时被调用. 9.3.2 在类中,构造函数是用来初始化对象的,利用构造函数,可以操作对象,并改变它的值. 9.3.3 当__ ...