quartz定时任务框架
文章目录
- 1.什么是Quartz
- Quartz的组成
- 调度器:Scheduler
- 任务:JobDetail
- 触发器:Trigger
- 3.Quartz Demo搭建
- 4.Quartz核心详解
- Quartz框架中的几个重要参数:
- (1)Job和JobDetail
- (2)JobExecutionContext
1.什么是Quartz
Quartz是OpenSymphony开源组织在Job
scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer,
Quartz增加了很多功能:持久性作业 - 就是保持调度定时的状态; 作业管理 - 对调度作业进行有效的管理;
Quartz的组成
Quartz的基本组成部分:
- 调度器:Scheduler
- 任务:JobDetail
- 触发器:Trigger,包括SimpleTrigger和CronTrigger
调度器:Scheduler
来负责Job和Trigger结合这个功能的实现。
任务:JobDetail
首先我们需要定义实现一个定时功能的接口,我们可以称之为Task(或Job),如定时发送邮件的task(Job),重启机器的task(Job),优惠券到期发送短信提醒的task(Job)
触发器:Trigger
有了任务之后,还需要一个能够实现触发任务去执行的触发器,触发器Trigger最基本的功能是指定Job的执行时间,执行间隔,运行次数等。
3.Quartz Demo搭建
1、导入依赖的jar包:
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.0</version>
</dependency>
2、新建一个能够打印任意内容的Job:
/*** Created by wanggenshen* Date: on 2018/7/7 16:28.* Description: 打印任意内容*/
public class PrintWordsJob implements Job{@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {String printTime = new SimpleDateFormat("yy-MM-dd HH-mm-ss").format(new Date());System.out.println("PrintWordsJob start at:" + printTime + ", prints: Hello Job-" + new Random().nextInt(100));}
}
3、创建Schedule,执行任务:
/*** Created by wanggenshen* Date: on 2018/7/7 16:31.* Description: XXX*/
public class MyScheduler {public static void main(String[] args) throws SchedulerException, InterruptedException {// 1、创建调度器SchedulerSchedulerFactory schedulerFactory = new StdSchedulerFactory();Scheduler scheduler = schedulerFactory.getScheduler();// 2、创建JobDetail实例,并与PrintWordsJob类绑定(Job执行内容)JobDetail jobDetail = JobBuilder.newJob(PrintWordsJob.class).withIdentity("job1", "group1").build();// 3、构建Trigger实例,每隔1s执行一次Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "triggerGroup1").startNow()//立即生效.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1)//每隔1s执行一次.repeatForever()).build();//一直执行//4、执行scheduler.scheduleJob(jobDetail, trigger);System.out.println("--------scheduler start ! ------------");scheduler.start();//睡眠TimeUnit.MINUTES.sleep(1);scheduler.shutdown();System.out.println("--------scheduler shutdown ! ------------");}
}
4.Quartz核心详解
Quartz框架中的几个重要参数:
- Job和JobDetail
- JobExecutionContext
- JobDataMap
- Trigger、SimpleTrigger、CronTrigger
(1)Job和JobDetail
Job是Quartz中的一个接口,接口下只有execute方法,在这个方法中编写业务逻辑。
JobDetail用来绑定Job,为Job实例提供许多属性:
- name
- group
- jobClass
- jobDataMap
JobDetail绑定指定的Job,每次Scheduler调度执行一个Job的时候,首先会拿到对应的Job,然后创建该Job实例,再去执行Job中的execute()的内容,任务执行结束后,关联的Job对象实例会被释放,且会被JVM GC清除。
(2)JobExecutionContext
JobExecutionContext中包含了Quartz运行时的环境以及Job本身的详细数据信息。
当Schedule调度执行一个Job的时候,就会将JobExecutionContext传递给该Job的execute()中,Job就可以通过JobExecutionContext对象获取信息。
quartz定时任务框架相关推荐
- Quartz定时任务框架(二)
1. Quartz的体系结构 2. Quartz的核心API 2.1. Job 2.2. JobDetail 2..3. Trigger 2.3.1. SimpleTrigger简单触发器 2.3.2 ...
- Quartz定时任务框架使用总结
Quartz可以用来做什么? Quartz是一个任务调度框架.比如你遇到这样的问题 想每月25号,信用卡自动还款 想每年4月1日自己给当年暗恋女神发一封匿名贺卡 想每隔1小时,备份一下自己的爱情动作片 ...
- Spring集成Quartz定时任务框架介绍
一.增加所依赖的JAR包 1.增加Spring的Maven依赖 <dependency> <groupId>org.springframework</groupId> ...
- 墨客网java_墨客网-知识拆解+经典定时任务案例 精讲Java定时任务框架Elastic-Job和Quartz...
课程介绍 精讲Elastic-job + Quartz实现企业级定时任务 掌握分布式集群方式的定时任务框架,可以弥补企业中常用的单点任务的缺点,以更高的性能更好的稳定性处理分布式定时任务服务:本课程带 ...
- 全云化架构(十一):分布式定时任务框架对比
分布式定时任务框架对比 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式.叫做分布式定时任务. 常见的分布式定时任务平台有elastic-job , ...
- Quartz学习总结(2)——定时任务框架Quartz详解
一.概述 Quartz是OpenSymphony开源组织的一个开源项目,定时任务框架,纯Java语言实现,最新版本为2.3.0. Quartz中用到的设计模式:Builder模式.Factory模式. ...
- 定时任务框架Quartz
在Spring Boot 中要实现定时任务,有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用Quartz. 1.Scheduled 这种用法非常简 ...
- 详细总结:分布式, Nginx Linux Redis 微服务 Dubbo框架 Quartz定时任务
目录 1.1 概念 2.1分布式概念 2.2分布式项目拆分 2.3分布式项目总结 2.3 分布式事务 3.1 Nginx配置文件介绍 3.2 实现负载均衡(Tomcat高可用) 3.3 常见面试题 4 ...
- quartz 每月一次_Quartz 定时任务框架详解
1.Quartz 体系结构 Quartz 设计有四个核心类,分别是Scheduler(调度器).Job(任务) .Trigger(触发器).JobDetail(任务详情),他们是使用Quartz的关键 ...
- 5分钟快速掌握 Python 定时任务框架
APScheduler 简介 在实际开发中我们经常会碰上一些重复性或周期性的任务,比如像每天定时爬取某个网站的数据.一定周期定时运行代码训练模型等,类似这类的任务通常需要我们手动来进行设定或调度,以便 ...
最新文章
- 直播报名 | 基金业数字化运营指标体系建设
- 虚机大比拼之HYPER-V
- 【Qt5.8】TypeError: Property 'asciify' of object Core问题解决办法
- MyEclipse中消除frame引起的“the file XXX can not be found.Please check the location and try again.”的错误...
- java面试中jvm执行子系统详细分析(三)
- 进程间通信————无名管道
- 为Sublime Text 3的C++编译器(g++)添加C++11标准的方法
- windows远程禁止登陆
- 设置java路径_关于java路径设置
- python定义函数的组成部分有_Python学习笔记之函数的定义和作用域实例详解
- 2017级面向对象程序设计——团队作业2
- [Avalon]如何实现自定义MarkupExtension.
- 20170908在线编程之圆周上问两点间的距离问题
- 【Verilog HDL】2. 4选1数据选择器
- ncm转MP3的工具
- 安卓软件改名器_安卓歌词适配V3.9.5 无损音乐下载器(软件篇)
- 《电子懒人的基础硬件电路图讲解》68例电路总结
- Docker部署ssm项目
- MATLAB实现一组随机点分成两组,每组随机点分别与一个特定点连线
- android 接电话 返回后黑屏,安卓手机打电话黑屏怎么办?解决安卓接电话黑屏