Quartz
文章
1 概述
概述 一篇就够了: https://zhuanlan.zhihu.com/p/306591082 1 概述什么是QuartzQuartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法: 1public void execute(JobExecutionContext context) throws JobExecutionException; 在Job接口实现类里面,添加需要的逻辑到execute()方法中。配置好Job实现类并设定好调度时间表,Quartz就会自动在设定的时间调度作业执行execute()。 整合了Quartz的应用程序可以重用不同事件的作业,还可以为一个事件组合多个作业。Quartz通过属性文件来配置JDBC事务的数据源、全局作业、触发器侦听器、插件、线程池等等。 核心概念 Job 表示一个工作,要执行的具...
2 CronTrigger
3 CronTrigger类Quartz有两大触发器,除了上面使用的SimpleTrigger外,就是CronTrigger。CronTrigger能够提供复杂的触发器表达式的支持。CronTrigger是基于Unix Cron守护进程,它是一个调度程序,支持简单而强大的触发器语法。 使用CronTrigger主要的是要掌握Cron表达式。Cron表达式包含6个必要组件和一个可选组件,如下表所示。 位置 含义 允许的特殊字符 1 秒(0~59) , - * / 2 分(0~59) , - * / 3 小时(0~24) , - * / 4 日期(1~31) , - * / ? L W C 5 月(JANDEC或112) , - * / 6 星期(SUNSAT或17) , -&...
3 配置文件
5 配置文件上述没有用到任何的配置文件。Quartz支持配置文件,它的好处是比编写代码简单,且修改后不需要重新编译源码。 配置quartz.properties特性文件quartz.properties文件定义了Quartz应用运行时行为,还包含了许多能控制Quartz运转的属性。它应放在工程的classpath中。 1234567891011121314151617181920212223242526272829303132333435363738394041代码清单5:quartz.properties#============================================================================ # Configure Main Scheduler Properties #============================================================================# 实例名org.quartz.scheduler.instanceName = Quart...
4 JobStore
Job Stores2018-09-18 14:36 更新JobStore负责跟踪您提供给调度程序的所有“工作数据”:jobs,triggers,日历等。为您的Quartz调度程序实例选择适当的JobStore是重要的一步。幸运的是,一旦你明白他们之间的差异,那么选择应该是一个非常简单的选择。 您声明您提供给用于生成调度程序实例的SchedulerFactory的属性文件(或对象)中您的调度程序应使用哪个JobStore(以及它的配置设置)。 切勿在代码中直接使用JobStore实例。由于某种原因,许多人试图这样做。JobStore用于Quartz本身的幕后使用。你必须告诉Quartz(通过配置)使用哪个JobStore,但是你应该只在代码中使用Scheduler界面。RAMJobStoreRAMJobStore是使用最简单的JobStore,它也是性能最高的(在CPU时间方面)。RAMJobStore以其明显的方式获取其名称:它将其所有数据保存在RAM中。这就是为什么它是闪电般快的,也是为什么这么简单的配置。缺点是当您的应用程序结束(或崩溃)时,所有调度信息都将丢失 - 这意味...
5 JobDataMap
JobDataMap https://blog.csdn.net/qq_30859353/article/details/120533838 JobDataMap中可以包含不限量的(序列化的)数据对象,在job实例执行的时候,可以使用其中的数据;JobDataMap是Java Map接口的一个实现,额外增加了一些便于存取基本类型的数据的方法。 将job加入到scheduler之前,在构建JobDetail时,可以将数据放入JobDataMap,如下示例: 1234567891011121314151617181920212223242526 // define the job and tie it to our DumbJob class JobDetail job = newJob(DumbJob.class) .withIdentity("myJob", "group1") // name "myJob", group "group1" .usingJobData(&quo...
6 JobListener
Listeners是您创建的对象,用于根据调度程序中发生的事件执行操作。您可能猜到,TriggerListeners接收到与触发器(trigger)相关的事件,JobListeners 接收与jobs相关的事件。 与触发相关的事件包括:触发器触发,触发失灵(在本文档的“触发器”部分中讨论),并触发完成(触发器关闭的作业完成)。 org.quartz.TriggerListener接口 public interface TriggerListener { public String getName(); public void triggerFired(Trigger trigger, JobExecutionContext context); public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context); public void triggerMisfired(Trigger trigger); public void triggerComplete(Trigger trigge...
8 SpringQuartz
1 SpringBoot-quartz基本用法添加依赖1234567891011<!-- 实现对 Spring MVC 的自动化配置 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- 实现对 Quartz 的自动化配置 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId></dependency> 创建任务创建job 12345678910111213141516171819@Slf4jpublic class FirstJo...











