李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
01.Quartz介绍
Leefs
2021-08-30 AM
1232℃
0条
# 01.Quartz介绍 ### 一、Quartz概述 + Quartz是开源任务调度框架,它提供了强大的任务调度机制。 + Quartz允许开发人员灵活的定义触发器的调度时间表,并可对触发器和任务进行关联映射。 + Quartz提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失。此外,Quartz还提供了组件式的侦听器、各种插件、线程池等功能。 *官网地址:http://www.quartz-scheduler.org/* ### 二、Quart特点 + 简单易用,调度功能强大 支持丰富多样的调度方法,可以满足各种常规及特殊需求 + 灵活性 作为Spring默认的调度框架,支持任务和调度的多种组合方式,支持调度数据的多种存储方式 + 分布式和集群能力 伸缩性,高可用性,负载均衡 ### 三、Quart设计模式 Quart中使用的设计模式如下: + Builder模式 + Factory模式 + 组件模式 + 链式模式 ### 四、Quart体系结构 Quartz 设计有四个核心类,分别是**Scheduler(调度器)**、**Job(任务)** 、**Trigger(触发器)**、**JobDetail(任务详情)**,他们是使用Quartz的关键。 ![01.Quartz介绍01.jpeg](https://lilinchao.com/usr/uploads/2021/08/2236567478.jpeg) #### Job Job:定义需要执行的任务,该类是一个接口,只定义了一个方法`execute(JobExecutionContext context)`,在实现类的`execute`方法中编写所需要定时执行的Job(任务),`JobExcutionContext`类提供了调度应用的一些信息。Job运行时的信息保存在JobDataMap实例中。 #### Trigger Trigger:负责设置调度策略。该类是一个接口,描述触发job执行的时间触发规则。主要有SimpleTrigger和CronTrigger这两个子类。当且仅当需调度一次或者以固定时间间隔周期执行调度,SimpleTrigger 是最适合的选择;而CronTrigger则可以通过Cron表达式定义出各种复杂时间规则的调度方案:如在周一到周五的15:00 ~ 16:00 执行调度等。 #### Scheduler Scheduler:调度器就相当于一个容器,装载着任务和触发器。该类是一个接口。代表一个Quartz的独立运行容器。Trigger和JobDetail可以注册到Scheduler中,两者在Scheduler中拥有各自的组及名称,组及名称是Scheduler查找定位容器中某一对象的依据。 #### JobDetail JobDetail:描述Job的实现类及其它相关的静态信息,如:Job名字、描述、关联监听器等信息。Quartz每次调度Job时,都重新创建一个Job实例,它接受一个Job实现类,以便运行时通过newInstance()的反射机制实例化Job。 #### ThreadPool Scheduler使用一个线程池作为任务运行的基础设施,任务通过共享线程池中的线程提高运行效率。 Job有一个 ~~StatefulJob~~ 子接口(Quartz2后用@PersistJobDataAfterExecution注解代替),代表有状态的任务,该接口是一个没有方法的标签接口,其目的是让Quartz知道任务的类型,以便采用不同的执行方案。 - 无状态任务在执行时拥有自己的 JobDataMap 拷贝,对 JobDataMap 的更改不会影响下次的执行。 - 有状态任务共享同一个 JobDataMap 实例,每次任务执行对 JobDataMap 所做的更改会保存下来,后面的执行可以看到这个更改,也即每次执行任务后都会对后面的执行发生影响。 正因为这个原因,无状态的Job能并发执行,而有状态的StatefulJob不能并发执行。 #### Listener Listener:Quartz拥有完善的事件和监听体系,大部分组件都拥有事件,如:JobListener监听任务执行前事件、任务执行后事件;TriggerListener监听触发前事件,触发后事件;TriggerListener监听调度开始事件,关闭事件等等,可以注册响应的监听器处理感兴趣的事件。 *附:* *参考文章链接:https://www.jianshu.com/p/cf84ad2a46db*
标签:
Quartz
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://www.lilinchao.com/archives/1400.html
上一篇
05.Kafka架构和工作流程
下一篇
02.Quartz入门案例
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
Beego
队列
容器深入研究
DataWarehouse
Hadoop
Typora
Redis
Flink
Sentinel
Hbase
RSA加解密
链表
Livy
随笔
FastDFS
Kibana
数据结构
哈希表
Git
Quartz
Hive
MySQL
ClickHouse
FileBeat
Shiro
JVM
Http
MyBatisX
Tomcat
JavaSE
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞