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 参数说明相关推荐

  1. Quartz在Spring中设置动态定时任务 .

    什么是动态定时任务: 是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定).这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文 ...

  2. Quartz分布式实现

    1.项目背景 以前项目都是单体项目,在线上环境发布的时候,都是单机版.后来使用的用户越来越多了.就需要做负载了.因为项目在实际使用的过程中,使用到了定时任务.所以就引入了Quartz框架. 2.出现的 ...

  3. java quartz timer_Java定时器Quartz和Timer

    Java定时器之Quartz 简介 官方说明 Quartz is a richly featured, open source job scheduling library that can be i ...

  4. 定时任务 Scheduled quartz

    在项目应用中往往会用到任务定时器的功能,比如某某时间,或者多少多少秒然后执行某个骚操作等. spring 支持多种定时任务的实现,其中不乏自身提供的定时器. 接下来介绍一下使用 spring 的定时器 ...

  5. 任务调度的方式:Timer、ScheduledExecutorService、spring task、quartz、XXL-JOB、Elastic-Job

    任务调度 定时任务调度:基于给定的时间点.给定的时间间隔.给定的执行次数自动执行的任务. Timer 介绍 Timer,简单无门槛,一般也没人用. Timer位于java.util包下,其内部包含且仅 ...

  6. Mysql中 设置大小写敏感,Quartz数据库持久化表

    问题描述 生产环境中linux是区分大小写的,windows默认不区分,因为项目涉及到的数据库名含大写,所以进行设置 解决方案: 找到my.ini文件 这里推荐用Everything 直接搜就行 打开 ...

  7. VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件

    1. 下载和官网教程 下载地址:https://code.visualstudio.com/ 官方教程:https://code.visualstudio.com/docs 2. 安装插件 安装扩展插 ...

  8. SpringBoot中实现quartz定时任务

    Quartz整合到SpringBoot(持久化到数据库) 背景 最近完成了一个小的后台管理系统的权限部分,想着要扩充点东西,并且刚好就完成了一个自动疫情填报系统,但是使用的定时任务是静态的,非常不利于 ...

  9. Java基于Quartz的定时任务调度服务(一)

    Quartz的基本用法 一 Quartz的简单介绍 Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现,一个优秀的开源调度框架,其特点是:强大的 ...

最新文章

  1. mongodb:linux基本操作
  2. Informatica PowerCenter使用介绍-转载
  3. base64码 java_工具类:Java将图片变成base64码
  4. TSRC白帽子,10亿用户的守护者
  5. vue中请求接口怎么封装公共地址_vue请求接口的封装
  6. 用css实现模仿火狐社区的一个提示框
  7. Java华容道小程序设计
  8. 如何避免淘宝拼多多比价订单?教你应对
  9. Jill Rides Again UVA - 507(求最大子序列和)
  10. 真正理解微软Windows程序运行机制——窗口机制(第一部分)
  11. 收单外包机构备案业务类型汇总分析
  12. 为长颈鹿做一个名片二维码,扫描就能了解它的详细信息
  13. python集合优化实践
  14. 攻击入侵检测NIDS分析
  15. maven配置项目根路径_maven配置src/resources默认目录
  16. 中科图新地图软件(LocaSpaceViewer)的各种卫片的偏移对比
  17. C盘免费扩容【已解决】
  18. 中控考勤管理系统装服务器,中控智慧服服系统的考勤管理整个流程是怎样的?...
  19. C语言 typedef关键字
  20. edge浏览器flash插件怎么启用

热门文章

  1. 【PMP认证考试之个人总结】 第 13 章 PMP计算题汇总
  2. socket是一个编程接口
  3. AutoCAD套合(叠加)卫星影像和矢量路网数据-CAD配准
  4. Linux高性能服务器编程——书籍阅读笔记
  5. 电脑端浏览器调试移动端网页 支持调试Android和ios
  6. Aop介绍 ,aop使用 aop解释
  7. Servlet - Sessions and Cookies
  8. Github搜索开源项目过滤技巧
  9. Text-to-Table: A New Way of Information Extraction
  10. 利用matlab的interp1()对矩阵进行插值