java quartz是什么意思_精进 Quartz—Quartz大致介绍(一)
本系列开始整理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大致介绍(一)相关推荐
- java旅游系统项目经验_谁能跟我介绍一下Java 项目经验,刚进入这个行业。
1. 简单地讲就是jsp就是一模板,用来生成html.一个jsp模板结合不同的数据就可以生成不同的html,浏览器只认最终的html.这种技术通常又称为动态网页,其它的像什么asp,php其实都是一个 ...
- java中国象棋兵吃棋规则_国际象棋兵吃子规则介绍_国际象棋吃子的理论介绍
国际象棋有6种棋子,而这里的棋子是广义的意思,也包括兵.国际象棋中兵怎么吃子的?国际象棋兵吃子的规则是怎样的?下面学习啦小编给你介绍国际象棋兵吃子规则介绍,欢迎阅读. 国际象棋兵吃子规则 关于国际象棋 ...
- 美年旅游_套餐管理_定时任务组件Quartz
文章目录 补充上前面没有的配置 先配置这些 2.4. 完善文件上传,Redis存储图片名称 美年旅游_套餐管理_定时任务组件Quartz 4.1. Quartz介绍 Quartz 入门案例 4.2. ...
- java timer cron_Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)
在Java中,实现定时任务有多种方式.本文介绍4种.Timer和TimerTask.Spring.QuartZ.Linux Cron. 以上4种实现定时任务的方式.Timer是最简单的.不须要不论什么 ...
- 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
前言 之前发布过第一个版本,有兴趣的可以去看看: NET Core 基于Quartz的UI可视化操作组件 GZY.Quartz.MUI 简介 GitHub开源地址:l2999019/GZY.Quart ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- java周志第二周_20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 1.Git提交日志已经实现一个功能/一个bug修复的注释说明,如图所示: 2.测试代 ...
- Quartz.NET总结(五)基于Quartz.net 的开源任务管理平台
前面总结了很多,关于Quartz.net 的文章,介绍了如何使用Quartz.net.不清楚的朋友,可以看我之前的系列文章,http://www.cnblogs.com/zhangweizhong/c ...
- JAVA编程习题及答案_完美版
JAVA编程习题及答案_完美版 原创 lingwu7 最后发布于2017-08-15 20:01:12 阅读数 10796 收藏 发布于2017-08-15 20:01:12 版权声明:本文为博主原创 ...
- 微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-翟东平-专题视频课程...
微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-2445人已学习 课程介绍 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识. 微信小 ...
最新文章
- Nginx+ThinkPHP不支持PathInfo的解决办法
- Java多线程-synchronized关键字
- Lind.DDD.DynamicModules动态模块化的设计
- Flask 项目实战|从零开发“StackOverflow”问答网站
- linux系统加多个网卡,Linux环境下填加多个IP段在同一网卡
- 开源信息系统开发平台之OpenExpressApp框架 1.1 春节飞虎版发布
- python微信图标制作_Python十分钟制作属于你自己的个性logo
- 团“模子”政策模式乱舞
- 跨平台客户端开发经验总结
- delphi mysql变体类型_Delphi 2010学习笔记(8)---数据类型(顺序类型)---2011-01-19
- 【windows10】对系统盘瘦身
- 读书篇:《细说PHP》一、简介
- 廊坊金彩教育:如何进行选品
- 数据处理笔记6:缺失值填充
- Django项目QQ登录后端接口实现
- 深夜切题——PAT (Basic Level)-1015
- 利用闲置笔记本电脑搭建linux服务器并布置自己的网站
- 看雪3万课程笔记-FRIDA高级API实用方法:Frida Hook Java(一)
- ebs xml开发 html,EBS excel模板xml publisher开发
- 微盛创始人杨明:企业微信将成为中国saas的新土壤
热门文章
- 如何自己搭建钓鱼网站检测系统
- android hci设备,android-hci相关操作
- WIFI限制敏感网页_秒杀同类“付费投屏”软件,完全免费无限制
- etcd系列深入浅出客户端
- Ubuntu 搜狗输入法 关闭简繁切换快捷键
- 信息学奥赛一本通 铲雪车
- 10分钟让你掌握Linux常用命令(+2万+++收藏)
- 66个求职应聘技巧性问答(三)
- HihoCoder - 1829 Tomb Raider (暴力+最长上升子序列)
- 富士康年轻工人现状调查:厌倦并依赖着-转自鲜果网