quartz 参数说明
JobDetail
JobDetail 用来保存我们作业的详细信息。一个JobDetail可以有多个Trigger,但是一个Trigger只能对应一个JobDetail。下面是JobDetail的一些常用的属性和含义
参数名 |
类型 |
备注 |
name |
String |
任务的名称,必须 |
group |
String |
任务所在组,默认为DEFAULT |
jobClass |
Class |
任务的实现类,必须 |
description |
String |
描述 |
jobDataMap |
JobDataMap |
用来给作业提供数据支持的数据结构 |
volatility |
Boolean |
重启应用之后是否删除任务的相关信息,默认false |
durability |
Boolean |
任务完成之后是否依然保留到数据库,默认false |
shouldRecover |
Boolean |
应用重启之后时候忽略过期任务,默认false |
jobListeners |
Set |
监听器 |
如:
<bean id="myjob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob1" /><property name="durability" value="true" /></bean>
JobDataMap
这是一个给作业提供数据支持的数据结构,使用方法和java.util.Map一样,非常方便。当一个作业被分配给调度器时,JobDataMap实例就随之生成。
Job有一个StatefulJob子接口,代表有状态的任务,该接口是一个没有方法的标签接口,其目的是让Quartz知道任务的类型,以便采用不同的执行方案。无状态任务在执行时拥有自己的JobDataMap拷贝,对JobDataMap的更改不会影响下次的执行。而有状态任务共享共享同一个JobDataMap实例,每次任务执行对JobDataMap所做的更改会保存下来,后面的执行可以看到这个更改,也即每次执行任务后都会对后面的执行发生影响。
正因为这个原因,无状态的Job可以并发执行,而有状态的StatefulJob不能并发执行,这意味着如果前次的StatefulJob还没有执行完毕,下一次的任务将阻塞等待,直到前次任务执行完毕。有状态任务比无状态任务需要考虑更多的因素,程序往往拥有更高的复杂度,因此除非必要,应该尽量使用无状态的Job。
如果Quartz使用了数据库持久化任务调度信息,无状态的JobDataMap仅会在Scheduler注册任务时保持一次,而有状态任务对应的JobDataMap在每次执行任务后都会进行保存。
JobDataMap实例也可以与一个触发器相关联。这种情况下,对于同一作业的不同触发器,我们可以在JobDataMap中添加不同的数据,以便作业在不同时间执行时能够提供更为灵活的数据支持(学校上午放眼保健操录音第一版,下午放第二版)。
不管是有状态还是无状态的任务,在任务执行期间对Trigger的JobDataMap所做的更改都不会进行持久,也即不会对下次的执行产生影响。
触发器(Trigger)
Trigger是一个抽象类,Quartz提供了两个比较常用的触发器SimpleTrigger和CronTrigger。它们都是Trigger的子类
SimpleTrigger
这是一个简单的触发器,通过它我们可以定义触发的时间,并选择性的设定重复的次数和间隔时间。它有以下常用的属性
参数名 |
参数类型 |
备注 |
name |
String |
触发器名称 |
group |
String |
触发器组名称 |
repeatCount |
int |
重复次数,注意:如果为0表示不执行,-1表示不限制次数(直到过期),默认为0 |
repeatInterval |
long |
间隔时间,注意:是以毫秒为单位 |
startTime |
Date |
开始时间,默认当前时间 |
endTime |
Date |
过期时间,默认一直执行(直到执行次数已达到repeatCount) |
CronTrigger
这个触发器的功能非常强大,而且非常灵活,但需要掌握有关的Cron表达式知识
参数名 |
参数类型 |
备注 |
name |
String |
触发器名称 |
group |
String |
触发器组名称 |
cronEx |
CronExpression |
规则表达式 |
startTime |
Date |
开始时间,默认当前时间 |
endTime |
Date |
过期时间,默认一直执行(直到执行次数已达到repeatCount) |
quartz 参数说明相关推荐
- Quartz在Spring中设置动态定时任务 .
什么是动态定时任务: 是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定).这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文 ...
- Quartz分布式实现
1.项目背景 以前项目都是单体项目,在线上环境发布的时候,都是单机版.后来使用的用户越来越多了.就需要做负载了.因为项目在实际使用的过程中,使用到了定时任务.所以就引入了Quartz框架. 2.出现的 ...
- java quartz timer_Java定时器Quartz和Timer
Java定时器之Quartz 简介 官方说明 Quartz is a richly featured, open source job scheduling library that can be i ...
- 定时任务 Scheduled quartz
在项目应用中往往会用到任务定时器的功能,比如某某时间,或者多少多少秒然后执行某个骚操作等. spring 支持多种定时任务的实现,其中不乏自身提供的定时器. 接下来介绍一下使用 spring 的定时器 ...
- 任务调度的方式:Timer、ScheduledExecutorService、spring task、quartz、XXL-JOB、Elastic-Job
任务调度 定时任务调度:基于给定的时间点.给定的时间间隔.给定的执行次数自动执行的任务. Timer 介绍 Timer,简单无门槛,一般也没人用. Timer位于java.util包下,其内部包含且仅 ...
- Mysql中 设置大小写敏感,Quartz数据库持久化表
问题描述 生产环境中linux是区分大小写的,windows默认不区分,因为项目涉及到的数据库名含大写,所以进行设置 解决方案: 找到my.ini文件 这里推荐用Everything 直接搜就行 打开 ...
- VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件
1. 下载和官网教程 下载地址:https://code.visualstudio.com/ 官方教程:https://code.visualstudio.com/docs 2. 安装插件 安装扩展插 ...
- SpringBoot中实现quartz定时任务
Quartz整合到SpringBoot(持久化到数据库) 背景 最近完成了一个小的后台管理系统的权限部分,想着要扩充点东西,并且刚好就完成了一个自动疫情填报系统,但是使用的定时任务是静态的,非常不利于 ...
- Java基于Quartz的定时任务调度服务(一)
Quartz的基本用法 一 Quartz的简单介绍 Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现,一个优秀的开源调度框架,其特点是:强大的 ...
最新文章
- mongodb:linux基本操作
- Informatica PowerCenter使用介绍-转载
- base64码 java_工具类:Java将图片变成base64码
- TSRC白帽子,10亿用户的守护者
- vue中请求接口怎么封装公共地址_vue请求接口的封装
- 用css实现模仿火狐社区的一个提示框
- Java华容道小程序设计
- 如何避免淘宝拼多多比价订单?教你应对
- Jill Rides Again UVA - 507(求最大子序列和)
- 真正理解微软Windows程序运行机制——窗口机制(第一部分)
- 收单外包机构备案业务类型汇总分析
- 为长颈鹿做一个名片二维码,扫描就能了解它的详细信息
- python集合优化实践
- 攻击入侵检测NIDS分析
- maven配置项目根路径_maven配置src/resources默认目录
- 中科图新地图软件(LocaSpaceViewer)的各种卫片的偏移对比
- C盘免费扩容【已解决】
- 中控考勤管理系统装服务器,中控智慧服服系统的考勤管理整个流程是怎样的?...
- C语言 typedef关键字
- edge浏览器flash插件怎么启用