Quartz框架中的JobStore
问题:最多可以运行多少个任务(磁盘、内存、线程数)
Jobstore用来存储任务和触发器相关的信息,例如所有任务的名称、数量、状态等等。Quartz中有两种存储任务的方式,一种在在内存,一种是在数据库。
RAMJobStore
Quartz默认的 JobStore是 RAMJobstore,也就是把任务和触发器信息运行的信息存储在内存中,用到了 HashMap、TreeSet、HashSet等等数据结构。
如果程序崩溃或重启,所有存储在内存中的数据都会丢失。所以我们需要把这些数据持久化到磁盘。
JDBCJobStore
JDBCJobStore可以通过 JDBC接口,将任务运行数据保存在数据库中。
JDBC的实现方式有两种,JobStoreSupport类的两个子类:
JobStoreTX:在独立的程序中使用,自己管理事务,不参与外部事务。
JobStoreCMT:(Container Managed Transactions (CMT),如果需要容器管理事务时,使用它。使用 JDBCJobSotre时,需要配置数据库信息:
org.quartz.jobStore.class:org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#使用 quartz.properties,不使用默认配置
org.quartz.jobStore.useProperties:true
#数据库中 quartz表的表名前缀
org.quartz.jobStore.tablePrefix:QRTZ_
org.quartz.jobStore.dataSource:myDS
#配置数据源
org.quartz.dataSource.myDS.driver:com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
org.quartz.dataSource.myDS.user:root
org.quartz.dataSource.myDS.password:123456
org.quartz.dataSource.myDS.validationQuery=select 0 from dual
问题来了?需要建什么表?表里面有什么字段?字段类型和长度是什么?在官网的 Downloads链接中,提供了 11张表的建表语句: quartz-2.2.3-distribution\quartz-2.2.3\docs\dbTables
2.3的版本在这个路径下:src\org\quartz\impl\jdbcjobstore
表名与作用:
表名 | 作用 |
---|---|
QRTZ_BLOB_TRIGGERS | Trigger 作为Blob 类型存储 |
QRTZ_CALENDARS | 存储Quartz 的Calendar 信息 |
QRTZ_CRON_TRIGGERS | 存储CronTrigger,包括Cron 表达式和时区信息 |
QRTZ_FIRED_TRIGGERS | 存储与已触发的Trigger 相关的状态信息,以及相关Job 的执行信息 |
QRTZ_JOB_DETAILS | 存储每一个已配置的Job 的详细信息 |
QRTZ_LOCKS | 存储程序的悲观锁的信息 |
QRTZ_PAUSED_TRIGGER_GRPS | 存储已暂停的Trigger 组的信息 |
QRTZ_SCHEDULER_STATE | 存储少量的有关Scheduler 的状态信息,和别的Scheduler 实例 |
QRTZ_SIMPROP_TRIGGERS | 存储CalendarIntervalTrigger 和DailyTimeIntervalTrigger 两种类型的触发器 |
QRTZ_TRIGGERS | 存储已配置的Trigger 的信息 |
QRTZ_SIMPLE_TRIGGERS | 存储SimpleTrigger 的信息,包括重复次数、间隔、以及已触的次数 |
Quartz框架中的JobStore相关推荐
- Quartz框架中的Listener
我们有这么一种需求,在每个任务运行结束之后发送通知给运维管理员.那是不是要在每个任务的最后添加一行代码呢?这种方式对原来的代码造成了入侵,不利于维护.如果代码不是写在任务代码的最后一行,怎么知道任务执 ...
- Quartz框架中的Scheduler
调度器,是 Quartz的指挥官,由 StdSchedulerFactory产生.它是单例的.并且是 Quartz中最重要的 API,默认是实现类是 StdScheduler,里面包含了一个Quart ...
- Quartz框架中的Trigger
定义任务的触发规律,Trigger,使用 TriggerBuilder来构建. JobDetail跟 Trigger是 1:N的关系. 思考:为什么要解耦? Trigger接口在 Quartz有 4个 ...
- Quartz框架之触发器(3)
1 关于Quartz的触发器 Quartz框架中的触发器的主要功能就是指明何时该触发任务的执行, 触发器包含一系列的定义信息,开发人员可根据实际情形自定义对应的触发器. triggerKey 用于分组 ...
- Quartz 框架快速入门(二)
尽可能的用声明式处理软件配置,其次才考虑编程式的方式.在上一篇<Quartz 框架快速入门(一)>中,如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译.这种方 ...
- Quartz 框架快速入门(三)
在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Schedul ...
- SpringBoot与quartz框架实现分布式定时任务
前言 quartz的分布式调度策略是以数据库为边界资源的一种异步策略.各个调度器都遵守一个基于数据库锁的操作规则从而保证了操作的唯一性. 在quartz的集群解决方案里有张表scheduler_loc ...
- Quartz框架调用Demo
Quartz框架调用Demo 任务调度在JAVA应用程序中运用的十分普遍,掌握QUARTZ是必备的技能; 官网:http://www.quartz-scheduler.org/ 下载最新1.80资源包 ...
- SpringBoot - 集成Quartz框架:Couldn‘t acquire next trigger: Couldn‘t retrieve trigger: 不良的类型值 long : \x
写在前面 SpringBoot 集成Quartz框架时,数据保存方式使用PostgreSQL进行数据库持久化. 报错如下: Couldn't acquire next trigger: Couldn' ...
最新文章
- MySql错误代码1045的解决方案(修改密码)
- php自动post系统,php自动过滤POST,GET传参
- python ide如何运行_如何在Ubuntu上安装IDLE Python IDE
- python判断数据类型type_Python 判断数据类型有type和isinstance
- tomcat jdk servlet websocket版本对应关系
- 【转】python删除小记
- 嵌入式逻辑分析仪SignalTap II 设计范例
- jupyter notebook一些实用技巧
- java m.find()_正则有关问题 m.groupCount() 和 m.find()
- 拍照尺寸 ios_iOS 14照片和相机:QuickTake快捷键,照片标题,镜像自拍照等
- hive:默认允许动态分区个数为100,超出抛出异常:
- 常用的NoSQL数据库
- 使用标尺工具获取某点的坐标
- 怎么把网页保存成pdf格式-最简单操作
- Kafka中auto.offset.reset配置项参数为earliest/或者latest的区别
- 中国电信“公板”计划主攻中端市场
- Pr速成3小时学会视频剪辑[副业学习会]
- 3D NAND 前沿
- LDA主题模型1——数学基础
- 哈工大软件过程与工具复习总结
热门文章
- C 冒泡排序及其非常非常非常简单的优化
- 莫比乌斯反演定理证明
- [NIO系列]NIO源码分析之Buffer
- 织梦DedeCMS自定义表单限制IP24小时只能提交多少次
- 使用选择器语法来查找元素 - 你想使用类似于CSS或jQuery的语法来查找和操作元素...
- fscanf和feof的组合使用
- poj 2914(stoer_wanger算法求全局最小割)
- jdk1.8新特性(五)——Stream
- ![CDATA[ ]]
- mac 或linux上 pip 不支持ssl的问题