004-Quartz存储与持久化-基于quartz.properties的配置

1、概述html

  Quartz提供两种基本做业存储类型。第一种类型叫作RAMJobStore,第二种类型叫作JDBC做业存储。在默认状况下Quartz将任务调度的运行信息保存在内存中,这种方法提供了最佳的性能,由于内存中数据访问最快。不足之处是缺少数据的持久性,当程序路途中止或系统崩溃时,全部运行的信息都会丢失。mysql

  好比咱们但愿安排一个执行100次的任务,若是执行到50次时系统崩溃了,系统重启时任务的执行计数器将从0开始。在大多数实际的应用中,咱们每每并不须要保存任务调度的现场数据,由于不多须要规划一个指定执行次数的任务。对于仅执行一次的任务来讲,其执行条件信息自己应该是已经持久化的业务数据(如锁定到期解锁任务,解锁的时间应该是业务数据),当执行完成后,条件信息也会相应改变。固然调度现场信息不只仅是记录运行次数,还包括调度规则、JobDataMap中的数据等等。sql

  若是确实须要持久化任务调度信息,Quartz容许你经过调整其属性文件,将这些信息保存到数据库中。使用数据库保存任务调度信息后,即便系统崩溃后从新启动,任务的调度信息将获得恢复。如前面所说的例子,执行50次崩溃后从新运行,计数器将从51开始计数。使用了数据库保存信息的任务称为持久化任务。数据库

对比服务器

类型性能

优势spa

缺点.net

RAMJobStorehtm

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

由于调度程序信息是存储在被分配给JVM的内存里面,因此,当应用程序中止运行时,全部调度信息将被丢失。另外由于存储到JVM内存里面,因此能够存储多少个Job和Trigger将会受到限制

JDBC做业存储

支持集群,由于全部的任务信息都会保存到数据库中,能够控制事物,还有就是若是应用服务器关闭或者重启,任务信息都不会丢失,而且能够恢复因服务器关闭或者重启而致使执行失败的任务

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

2、quartz存储实例

2.一、创建数据存储表

  从下载到的quartz包里面找到对应的sql脚本。

  脚本位置:\quartz-1.8.6\quartz-1.8.6\docs\dbTables,mysql使用:tables_mysql_innodb.sql

  1.在数据中创建了一个quartz的database,执行以上脚本

    使用以上脚本可能会出现问题,将tables_mysql_innodb.sql中的TYENGINEPE=InnoDB或者TYPE=InnoDB所有都替换成ENGINE=InnoDB便可

2.二、新建工程,增长依赖

  新建工程参看:http://www.cnblogs.com/bjlhx/p/7059671.html

  增长pom依赖:mysql驱动,quartz包,common-lang等

相关文章
相关标签/搜索