quartz是一个高质量的任务调度软件包。其主要组成部分为:
Scheduler接口: quartz的执行线程,它根据Trigger决定调度时刻,根据JobDetail的说明实例化并运行Job
JobDetail类: 可持久化的任务描述信息。任务虽然分组,但是仅用作管理标示,任务之间并无实质性关联, 例如无法定义job chain。
Trigger类:任务的调度策略。这里的特点是调度策略与任务描述分开,调度策略和任务描述都可以分别在Scheduler注册,然后再关联起来。JobDetail与Trigger的关系是一对多。
JobDataMap: 将任务的运行时可持久化状态信息从JobDetail类中分离出来
Job接口: 任务的执行代码
StatefulJob接口: 无状态任务对应的JobDataMap可以认为是只读的,而有状态的任务在多次执行过程中保留对JobDataMap所作的修改,一个后果是有状态任务无法被并发执行。
JobExecutionException类: 可以通过JobExecutionException调整调度程序的下一步动作
Calendar接口: 用于从trigger的调度计划中排除某些时间段,例如假期等。
以上几个部分的交互关系如下:
class JobImpl implements Job{
public void execute(JobExecutionContext context) throws JobExecutionException{
JobDetail detail = context.getJobDetail();
JobDataMap dataMap = detail.getJobDataMap();
...
}
}
scheduler.addCalendar("myHolidays", holidayCalendar, false);
trigger.setCanlendarName("myHolidays");
JobDetail jobDetail = new JobDetail(jobName, jobGroupName, JobImpl.class);
scheduler.scheduleJob(jobDetail, trigger);
JobDetail可以设置如下属性:
1. Durability: non-durable的任务当不再与任何active trigger关联的时候将会从scheduler中被自动删除。
2. Volatility: volatile的任务在scheduler的两次启动之间不会被持久化
3. RequestsRecovery: 如果在执行过程中程序意外崩溃,标记为"request recovery"的任务在scheduler重起之后将会被再次执行,此时JobExecutionContext.isRecovering()返回true.
Trigger可以设置如下属性:
1. misfireInstruction: 设定当trigger错过了触发时刻的时候需要采取的处理策略
SimpleTrigger按照固定的时间间隔进行触发
startTime, endTime, repeatCount, repeatInterval
CronTrigger按照日历间隔进行触发
seconds minutes hours day-of-month month day-of-week
在quartz内部,QuartzSchedulerThread按照时间顺序选择trigger(没有任务优先级的概念), 然后在JobRunShell中运行Job。
JobRunShell中的调用顺序如下:
TriggerListener.triggerFired
Called by the Scheduler when a Trigger has fired, and it's associated JobDetail is about to be executed.
TriggerListener.vetoJobExecution
Called by the Scheduler when a Trigger has fired, and it's associated JobDetail is about to be executed.
JobListener.jobToBeExecuted
Called by the Scheduler when a JobDetail is about to be executed (an associated Trigger has occured).
Job.execute
Called by the Scheduler when a Trigger fires that is associated with the Job.
JobListener.jobWasExecuted
Called by the Scheduler after a JobDetail has been
executed, and be for the associated Trigger's triggered(xx) method has
been called.
Trigger.executionComplete
Called after the Scheduler has executed the
JobDetail associated with the Trigger in order to get the final
instruction
code from the trigger.
TriggerListener.triggerComplete
Called by the Scheduler when a Trigger has
fired, it's associated JobDetail has been executed, and it's
triggered(xx)
method has been called.
SchedulerListener.triggerFinalized [if(trigger.getNextFireTime() == null)]
Called by the Scheduler when a Trigger has reached the condition in which it will never fire again.
分享到:
相关推荐
Spring Quartz 定时调度任务,带中文注解与jar文件,导入项目即可直接运行。
各种企业应用几乎都会碰到任务调度的需求,e.g.:定时清理系统垃圾文件,定时导入导出数据,定时发送邮件等等业务场景,Quartz提供了这样的功能,并且高度可控,本文将带您一起领略Quartz的风采
任务调度器实例,实现了定时完成执行某个操作或某项任务,可具体到某个时间点。 完整项目,导入即可运行,配置文件有详细的说明。
基于SpringBoot+Quartz的轻量级分布式定时任务调度系统源码+项目说明+sql数据库.zip 主要技术选型 1、后端: - SpringBoot 2.6.11 - Quartz 2.3.2 - Mybatis-Plus 3.5.3.2 - Httpclient 4.5.13 2、前端: - Layui ...
下载导入就可以用,执行test类的main方法加载spring applicationContext.xml配置文件,启动Quartz定时器.修改spring配置文件的配置时间.详细看注释
Quartz是Job Scheduling(任务调度)领域的开源项目,可单独使用,也可和JavaSE,EE进行组合,是一个任务调度管理系统,可在特定的时间内执行特定的任务,如想在Java中使用Quartz,则只需将Quartz的jar包导入到项目中即可...
spring实现任务的自动调度所需的jar包
typora-root-url pictures Dynamic Quartz 最近在公司实习,发现公司有一套spring+Quartz的动态任务管理系统。可以使用Web界面进行任务动态的创建、删除、停止...在任务调度Quartz中,Trigger主要的触发器有:Simple
搭建说明 1. 将下载的项目导入到IDEA 2. 修改 spring-cache.xml 文件,配置自己的redis链接 3. 修改 jdbc.properties 文件,配置自己...5.使用 Quartz作为任务调度方案 6.使用ElasticSearch作为全文检索与数据分析方案
5.添加定时任务:不再使用作业自动调度框架Quartz实现作业调度,使用spring框架自带的调度器进行作业调度,简化了配置。@Scheduled是单线程的,每次最多只有一个作业在运行,如果调度时间到了作业还没执行完,就会...
- 使用 Quartz作为任务调度方案 - 使用ElasticSearch作为全文检索与数据分析方案 搭建说明 1. 将下载的项目导入到IDEA 2. 修改 spring-cache.xml 文件,配置自己的redis链接 3. 修改 jdbc.properties 文件,配置...
5.添加定时任务:不再使用作业自动调度框架Quartz实现作业调度,使用spring框架自带的调度器进行作业调度,简化了配置。@Scheduled是单线程的,每次最多只有一个作业在运行,如果调度时间到了作
其他六个模块为用户专业调度管理系统,更多是面向业务运维人员,关注于整个流程的执行情况和数据的导入转换细节信息,以及对任务的综合调度。完全支持部署和单机两种运行模式。并通过用户权限的管控让平台的资源分配...
任务调度:Spring + Quartz 2.2.3 持久层框架:MyBatis 3.4.2 + Mybatis-plus 2.0.1 数据库连接池:Alibaba Druid 1.0 缓存框架:Ehcache 2.6 + Redis 2.9.0 日志管理:SLF4J 1.7 + Log4j2 2.7 布局框架:SiteMesh ...
Active4j-Boot目前内置了部门管理、用户管理、角色管理、菜单管理、数据数据字典、定时任务、常用系统监控等基础功能,并内置了文件上传下载、导入导出、微信支付、支付宝支付、短信功能、邮件发送等常用工具,整合...
Active4j-Boot目前内置了部门管理、用户管理、角色管理、菜单管理、数据数据字典、定时任务、常用系统监控等基础功能,并内置了文件上传下载、导入导出、微信支付、支付宝支付、短信功能、邮件发送等常用工具,整合...
Active4j目前内置了部门管理、用户管理、角色管理、菜单管理、数据数据字典、定时任务、常用系统监控等基础功能,并内置了文件上传下载、导入导出、短信功能、邮件发送等常用工具,整合了layui前端常用组件。...
Active4j目前内置了部门管理、用户管理、角色管理、菜单管理、数据数据字典、定时任务、常用系统监控等基础功能,并内置了文件上传下载、导入导出、短信功能、邮件发送等常用工具,整合了layui前端常用组件。...
ERP_day09JavaMail发送预警邮件_使用Quartz任务调度框架_自动发送邮件 ERP_day10_PIO框架应用_订单导入_导出_HSSF读写Excel表格档案 ERP_day11_CXF框架_红日物流BOS系统_ERP物流信息管理 ERP_day12_Easyui--Thee...