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应用程序相结合 ...
随机推荐
- Beta冲刺提交—星期五
课程链接: https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业要求链接: https://edu.cnblogs.com/ ...
- 了解和解决SQL SERVER阻塞问题(copy)
http://support.microsoft.com/kb/224453 Summary In this article, the term "connection" refe ...
- DIV水平方向居中的几种方法
一.使用margin: 1 #center0 { 2 background: red; 3 margin: 0 auto; 4 } 或者: margin: auto; 这样的前提是父盒子里没有其他盒子 ...
- tp5控制器调用,方法调用
<?php //命名空间 namespace app\index\controller; use app\admin\controller\Deer; class User{ public ...
- 打包phar文件过大的问题。
根据一个开源工具得到的灵感,使用流打包,并使用token_get_all移除了所用PHP文件的空白.现在打包出来只有93k了.谢谢关注. 我一个简单的文件,加上一个symfony的process包,打 ...
- 配置ip地址四种方法,方便学习linux的朋友
(1)Ifconfig命令 第一种使用ifconfig命令配置网卡的ip地址.此命令通常用来零时的测试用,计算机启动后 ip地址的配置将自动失效.具体用法如下.Ipconfig ethx ip ...
- EL表达式的作用与限制条件
限制条件 只能访问域对象的数据 用法 访问基本数据类型 首先把数据保存在域对象中 pagecontext.setAttribute("name","eric") ...
- 测试用html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- EasyUI——DataGrid的自定义单元格点击事件
1.当点击的单元格需要传递参数,并且传递的是row的值时,需要进行转义 function initCompareTable(){ $("#deviceCompareTable"). ...
- Git的初始化设置
Git安装成功之后,新建一个初始化的仓库以及配置GitHub仓库 Git配置GitHub账户 安装完成之后要进行git的配置,这里配置的是GitHub账户 MisSa@DESKTOP-PIQ06QO ...