李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
01.Quartz介绍
Leefs
2021-08-30 AM
1808℃
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://lilinchao.com/archives/1400.html
上一篇
05.Kafka架构和工作流程
下一篇
02.Quartz入门案例
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
Golang基础
递归
gorm
字符串
算法
JVM
Filter
Sentinel
Spring
栈
LeetCode刷题
Elastisearch
Jquery
NIO
查找
Azkaban
JavaWEB项目搭建
GET和POST
BurpSuite
Kibana
哈希表
MyBatisX
Spark SQL
Netty
Java编程思想
Shiro
持有对象
队列
Git
序列化和反序列化
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭