本系列开始整理Quartz相关知识,Quartz一个开源的任务管理项目,值得学习!

一、介绍

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。

Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。

二、定时器种类

Quartz 中五种类型的 Trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger,NthIncludedDayTrigger和Calendar 类( org.quartz.Calendar)。

最常用的:

SimpleTrigger:用来触发只需执行一次或者在给定时间触发并且重复N次且每次执行延迟一定时间的任务。

CronTrigger:按照日历触发,例如“每个周五”,每个月10日中午或者10:15分。

三、存储方式

RAMJobStore和JDBCJobStore

对比:

类型

优点

缺点

RAMJobStore

不要外部数据库,配置容易,运行速度快

因为调度程序信息是存储在被分配给JVM的内存里面,所以,当应用程序停止运行时,所有调度信息将被丢失。另外因为存储到JVM内存里面,所以可以存储多少个Job和Trigger将会受到限制

JDBCJobStore

支持集群,因为所有的任务信息都会保存到数据库中,可以控制事物,还有就是如果应用服务器关闭或者重启,任务信息都不会丢失,并且可以恢复因服务器关闭或者重启而导致执行失败的任务

运行速度的快慢取决与连接数据库的快慢

四、表关系和解释

表关系

解释

表名称

说明

qrtz_blob_triggers

Trigger作为Blob类型存储(用于Quartz用户用JDBC创建他们自己定制的Trigger类型,JobStore并不知道如何存储实例的时候)

qrtz_calendars

以Blob类型存储Quartz的Calendar日历信息,quartz可配置一个日历来指定一个时间范围

qrtz_cron_triggers

存储CronTrigger,包括Cron表达式和时区信息。

qrtz_fired_triggers

存储与已触发的Trigger相关的状态信息,以及相联Job的执行信息

qrtz_job_details

存储每一个已配置的Job的详细信息

qrtz_locks

存储程序的非观锁的信息(假如使用了悲观锁)

qrtz_paused_trigger_graps

存储已暂停的Trigger组的信息

qrtz_scheduler_state

存储少量的有关Scheduler的状态信息,和别的Scheduler实例(假如是用于一个集群中)

qrtz_simple_triggers

存储简单的Trigger,包括重复次数,间隔,以及已触的次数

qrtz_triggers

存储已配置的Trigger的信息

qrzt_simprop_triggers

五、 核心类和关系

1、核心类

(1)核心类

QuartzSchedulerThread:负责执行向QuartzScheduler注册的触发Trigger的工作的线程。

ThreadPool:Scheduler使用一个线程池作为任务运行的基础设施,任务通过共享线程池中的线程提供运行效率。

QuartzSchedulerResources:包含创建QuartzScheduler实例所需的所有资源(JobStore,ThreadPool等)。

SchedulerFactory :提供用于获取调度程序实例的客户端可用句柄的机制。

JobStore: 通过类实现的接口,这些类要为org.quartz.core.QuartzScheduler的使用提供一个org.quartz.Job和org.quartz.Trigger存储机制。作业和触发器的存储应该以其名称和组的组合为唯一性。

QuartzScheduler :这是Quartz的核心,它是org.quartz.Scheduler接口的间接实现,包含调度org.quartz.Jobs,注册org.quartz.JobListener实例等的方法。

Scheduler :这是Quartz Scheduler的主要接口,代表一个独立运行容器。调度程序维护JobDetails和触发器的注册表。 一旦注册,调度程序负责执行作业,当他们的相关联的触发器触发(当他们的预定时间到达时)。

Trigger :具有所有触发器通用属性的基本接口,描述了job执行的时间出发规则。 - 使用TriggerBuilder实例化实际触发器。

JobDetail :传递给定作业实例的详细信息属性。 JobDetails将使用JobBuilder创建/定义。

Job:要由表示要执行的“作业”的类实现的接口。只有一个方法 void execute(jobExecutionContext context)

(jobExecutionContext 提供调度上下文各种信息,运行时数据保存在jobDataMap中)

Job有个子接口StatefulJob ,代表有状态任务。有状态任务不可并发,前次任务没有执行完,后面任务处于阻塞等到。

2、关系-自己理解

一个job可以被多个Trigger 绑定,但是一个Trigger只能绑定一个job!

六、 配置文件

quartz.properties

//调度标识名 集群中每一个实例都必须使用相同的名称 (区分特定的调度器实例)

org.quartz.scheduler.instanceName:DefaultQuartzScheduler

//ID设置为自动获取 每一个必须不同 (所有调度器实例中是唯一的)

org.quartz.scheduler.instanceId :AUTO

//数据保存方式为持久化

org.quartz.jobStore.class :org.quartz.impl.jdbcjobstore.JobStoreTX

//表的前缀

org.quartz.jobStore.tablePrefix : QRTZ_

//设置为TRUE不会出现序列化非字符串类到 BLOB 时产生的类版本问题

//org.quartz.jobStore.useProperties : true

//加入集群 true 为集群 false不是集群

org.quartz.jobStore.isClustered : false

//调度实例失效的检查时间间隔

org.quartz.jobStore.clusterCheckinInterval:20000

//容许的最大作业延长时间

org.quartz.jobStore.misfireThreshold :60000

//ThreadPool 实现的类名

org.quartz.threadPool.class:org.quartz.simpl.SimpleThreadPool

//线程数量

org.quartz.threadPool.threadCount : 10

//线程优先级

org.quartz.threadPool.threadPriority : 5(threadPriority 属性的最大值是常量 java.lang.Thread.MAX_PRIORITY,等于10。最小值为常量 java.lang.Thread.MIN_PRIORITY,为1)

//自创建父线程

//org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true

//数据库别名

org.quartz.jobStore.dataSource : qzDS

//设置数据源

org.quartz.dataSource.qzDS.driver:com.mysql.jdbc.Driver

org.quartz.dataSource.qzDS.URL:jdbc:mysql://localhost:3306/quartz

org.quartz.dataSource.qzDS.user:root

org.quartz.dataSource.qzDS.password:123456

org.quartz.dataSource.qzDS.maxConnection:10

七、JDBC插入表顺序

主要的JDBC操作类,执行sql顺序。

Simple_trigger :插入顺序

qrtz_job_details ---> qrtz_triggers ---> qrtz_simple_triggers

qrtz_fired_triggers

Cron_Trigger:插入顺序

qrtz_job_details ---> qrtz_triggers ---> qrtz_cron_triggers

qrtz_fired_triggers

八、参考文章

Quartz专栏系列

谢谢你的阅读,如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到!祝你每天开心愉快!

不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

愿你我在人生的路上能都变成最好的自己,能够成为一个独挡一面的人

© 每天都在变得更好的阿飞云

java quartz是什么意思_精进 Quartz—Quartz大致介绍(一)相关推荐

  1. java旅游系统项目经验_谁能跟我介绍一下Java 项目经验,刚进入这个行业。

    1. 简单地讲就是jsp就是一模板,用来生成html.一个jsp模板结合不同的数据就可以生成不同的html,浏览器只认最终的html.这种技术通常又称为动态网页,其它的像什么asp,php其实都是一个 ...

  2. java中国象棋兵吃棋规则_国际象棋兵吃子规则介绍_国际象棋吃子的理论介绍

    国际象棋有6种棋子,而这里的棋子是广义的意思,也包括兵.国际象棋中兵怎么吃子的?国际象棋兵吃子的规则是怎样的?下面学习啦小编给你介绍国际象棋兵吃子规则介绍,欢迎阅读. 国际象棋兵吃子规则 关于国际象棋 ...

  3. 美年旅游_套餐管理_定时任务组件Quartz

    文章目录 补充上前面没有的配置 先配置这些 2.4. 完善文件上传,Redis存储图片名称 美年旅游_套餐管理_定时任务组件Quartz 4.1. Quartz介绍 Quartz 入门案例 4.2. ...

  4. java timer cron_Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)

    在Java中,实现定时任务有多种方式.本文介绍4种.Timer和TimerTask.Spring.QuartZ.Linux Cron. 以上4种实现定时任务的方式.Timer是最简单的.不须要不论什么 ...

  5. 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI

    前言 之前发布过第一个版本,有兴趣的可以去看看: NET Core 基于Quartz的UI可视化操作组件 GZY.Quartz.MUI 简介 GitHub开源地址:l2999019/GZY.Quart ...

  6. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  7. java周志第二周_20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算

    20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 1.Git提交日志已经实现一个功能/一个bug修复的注释说明,如图所示: 2.测试代 ...

  8. Quartz.NET总结(五)基于Quartz.net 的开源任务管理平台

    前面总结了很多,关于Quartz.net 的文章,介绍了如何使用Quartz.net.不清楚的朋友,可以看我之前的系列文章,http://www.cnblogs.com/zhangweizhong/c ...

  9. JAVA编程习题及答案_完美版

    JAVA编程习题及答案_完美版 原创 lingwu7 最后发布于2017-08-15 20:01:12 阅读数 10796 收藏 发布于2017-08-15 20:01:12 版权声明:本文为博主原创 ...

  10. 微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-翟东平-专题视频课程...

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-2445人已学习 课程介绍         微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识. 微信小 ...

最新文章

  1. Nginx+ThinkPHP不支持PathInfo的解决办法
  2. Java多线程-synchronized关键字
  3. Lind.DDD.DynamicModules动态模块化的设计
  4. Flask 项目实战|从零开发“StackOverflow”问答网站
  5. linux系统加多个网卡,Linux环境下填加多个IP段在同一网卡
  6. 开源信息系统开发平台之OpenExpressApp框架 1.1 春节飞虎版发布
  7. python微信图标制作_Python十分钟制作属于你自己的个性logo
  8. 团“模子”政策模式乱舞
  9. 跨平台客户端开发经验总结
  10. delphi mysql变体类型_Delphi 2010学习笔记(8)---数据类型(顺序类型)---2011-01-19
  11. 【windows10】对系统盘瘦身
  12. 读书篇:《细说PHP》一、简介
  13. 廊坊金彩教育:如何进行选品
  14. 数据处理笔记6:缺失值填充
  15. Django项目QQ登录后端接口实现
  16. 深夜切题——PAT (Basic Level)-1015
  17. 利用闲置笔记本电脑搭建linux服务器并布置自己的网站
  18. 看雪3万课程笔记-FRIDA高级API实用方法:Frida Hook Java(一)
  19. ebs xml开发 html,EBS excel模板xml publisher开发
  20. 微盛创始人杨明:企业微信将成为中国saas的新土壤

热门文章

  1. 如何自己搭建钓鱼网站检测系统
  2. android hci设备,android-hci相关操作
  3. WIFI限制敏感网页_秒杀同类“付费投屏”软件,完全免费无限制
  4. etcd系列深入浅出客户端
  5. Ubuntu 搜狗输入法 关闭简繁切换快捷键
  6. 信息学奥赛一本通 铲雪车
  7. 10分钟让你掌握Linux常用命令(+2万+++收藏)
  8. 66个求职应聘技巧性问答(三)
  9. HihoCoder - 1829 Tomb Raider (暴力+最长上升子序列)
  10. 富士康年轻工人现状调查:厌倦并依赖着-转自鲜果网