Quartz介绍

编程入门 行业动态 更新时间:2024-10-24 22:30:20

<a href=https://www.elefans.com/category/jswz/34/1760745.html style=Quartz介绍"/>

Quartz介绍

一、前言

几乎所有系统都需要定时任务,如果系统中定时任务比较少并且是单机环境的直接使用SpringTask即可,如果定时任务比较多且需要经常维护或者要部署在分布式环境中就要考虑使用Quartz或者xxl-job等开源框架,今天我们来了解一下Quartz的基本使用。

二、Quartz核心概念

Quartz是一款功能强大的任务调度库,它核心概念如下:

1、任务 Job

被调度的任务都要实现Job接口execute()方法。

2、触发器 Trigger

Trigger用于设置任务的执行时间,Quartz表达式就是配置在Trigger上。

3、调度器 Scheduler

任务调度器,它负责将Job与Trigger整合起来,然后根据Trigger设置的时间来执行Job,可以start、stop、pause、resume任务。

三、Quartz简单例子

1、导入依赖

注:quartz使用slf4j打印日志,需要引入logback等日志实现。

2、配置文件

quartz.properties

注:设置并行运行的线程数以及配置jobstore存储,有RAMJobStore和JDBCJobSTore两种方式,RAMJobStore当进程重启会丢失,JDBCJobSTore配置存在数据库不会丢失。

3、自定义任务

注:实现Job接口,编写任务代码

4、创建任务调度

控制台输出如下

注:以前AndroidStudio有控制台输出过滤功能,IDEA反而没有,可以安装Grep-Console插件。

四、代码中几个对象解释

1、JobDetail

用于定义任务的数据,Scheduler每次执行时会根据JobDetail创建一个新的Job实例,避免直接执行Job存在并发的问题。

2、JobExecutionContext

可以用来访问Quartz环境及Job本身明细数据。

传参数例子

调度类设置JobDataMap传给JobDetail,在任务类中通过JobExecutionContext获取传入的JobDataMap,也可以通过Trigger传给任务类。

3、Job的状态

每次Scheduler执行Job方法之前都会创建新的Job实例,如果想将数据保留以便下一个运行期,需要在任务类上加上注解PersistJobDataAfterExecution,这样每次执行JobDataMap的数据仍保留

4、常用的Trigger实现类

SimpleTrigger

用于在特定时间启动且以一个可能的间隔时间重复执行的Job任务而设计。

CronTrigger

基于Cron表达式来进行作业调度,Quartz的表达式和Crontab表达式还是有些差别的,在线表达式生成工具会分别提供Quartz和Crontab表达式的生成。

5、Other

Quartz相对 Linux的Crontab更强大,Crontab是进程调度而Quartz是线程调度,Quartz支持集群,另外Quartz还支持Listener便于进行Job的监控,因为数据可以存在DB便于做Job任务管理的可视化。Crontab的使用参见 《时区调整害了Crontab时区调整害了Crontab》。

更多推荐

Quartz介绍

本文发布于:2023-11-16 10:23:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1618515.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Quartz

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!