一、表说明(建表,SQL语句在quartz-1.6.6\docs\dbTables文件夹中可以找到)

表名 说明
qrtz_calendars 以 Blob 类型存储 Quartz 的 Calendar 信息
qrtz_cron_triggers 存储 Cron Trigger,包括 Cron 表达式和时区信息
qrtz_fired_triggers 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
qrtz_paused_trigger_grps 存储已暂停的 Trigger 组的信息
qrtz_scheduler_state 存储少量的有关调度器 (Scheduler) 的状态,和别的 调度器 (Scheduler)实例(假如是用于一个集群中)
qrtz_locks 存储程序的非观锁的信息(假如使用了悲观锁)
qrtz_job_details 存储每一个已配置的 Job 的详细信息(jobDetail)
qrtz_job_listeners 存储有关已配置的 Job 监听器 的信息
qrtz_simple_triggers 存储简单的 Trigger,包括重复次数,间隔,以及已触的次数
qrtz_blog_triggers 以 Blob 类型存储的Trigger
(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候)
qrtz_trigger_listeners 存储已配置的触发器监听器 ( Trigger Listener ) 的信息
qrtz_triggers 存储已配置的 触发器 (Trigger) 的信息

二、表结构说明

表qrtz_job_details: 保存job详细信息,该表需要用户根据实际情况初始化 
       job_name:集群中job的名字,该名字用户自己可以随意定制,无强行要求 
       job_group:集群中job的所属组的名字,该名字用户自己随意定制,无强行要求 
       job_class_name:集群中个note job实现类的完全包名,quartz就是根据这个路径到classpath找到该job类 
       is_durable:是否持久化,把该属性设置为1,quartz会把job持久化到数据库中 
       job_data:一个blob字段,存放持久化job对象

表qrtz_triggers: 保存trigger信息 
       trigger_name: trigger的名字,该名字用户自己可以随意定制,无强行要求 
       trigger_group:trigger所属组的名字,该名字用户自己随意定制,无强行要求 
       job_name: qrtz_job_details表job_name的外键 
       job_group: qrtz_job_details表job_group的外键 
       trigger_state:当前trigger状态,( WAITING:等待 PAUSED:暂停ACQUIRED:正常执行 BLOCKED:阻塞 ERROR:错误。   当   (当设置为WAITING时JOB不触发)
       trigger_type:触发器类型,CRON、SIMPLE

表qrtz_cron_triggers:存储cron表达式表 
       trigger_name: qrtz_triggers表trigger_name的外键 
       trigger_group: qrtz_triggers表trigger_group的外键 
       cron_expression:cron表达式 
       
       表qrtz_scheduler_state:存储集群中note实例信息,quartz会定时读取该表的信息判断集群中每个实例的当前状态 
       instance_name:之前配置文件中org.quartz.scheduler.instanceId配置的名字,就会写入该字段,如果设置为AUTO,quartz会根据物理机名和当前时间产生一个名字 
       last_checkin_time:上次检查时间 
       checkin_interval:检查间隔时间

三、quartz配置文件

Quartz提供两种基本作业存储类型

第一种类型叫做RAMJobStore:
     最佳的性能,因为内存中数据访问最快
     不足之处是缺乏数据的持久性,当程序路途停止或系统崩溃时,所有运行的信息都会丢失
第二种类型叫做JDBC作业存储:
     通过调整其quartz.properties属性文件,持久化任务调度信息
     使用数据库保存任务调度信息后,即使系统崩溃后重新启动,任务的调度信息将得到恢复

1、RAMJobStore配置

#设置调度器的实例名
org.quartz.scheduler.instanceName: vpnOpenScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: falseorg.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
# 指定多少个工作者线程被创建用来处理 Job
org.quartz.threadPool.threadCount: 10
# 设置工作者线程的优先级(最大值10,最小值1,常用值5)
org.quartz.threadPool.threadPriority: 5
# 加载任务代码的ClassLoader是否从外部继承
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: trueorg.quartz.jobStore.misfireThreshold: 60000# 默认配置,数据保存到内存(调度程序信息是存储在被分配给JVM的内存里面,运行速度快)
org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore

2、JDBC作业存储

#调度器的实例名(instanceName)
org.quartz.scheduler.instanceName = AIJobServerScheduler
#设置调度器的实例ID (instanceId)如果使用集群,instanceId必须唯一,设置成AUTO
org.quartz.scheduler.instanceId = AUTOorg.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5#是否使用集群(如果项目只部署到 一台服务器,就不用了)
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000 org.quartz.jobStore.misfireThreshold = 60000
# 持久化配置(存储方式使用JobStoreTX,也就是数据库)
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
# 驱动器方言 数据库平台
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate#数据库中quartz表的表名前缀
org.quartz.jobStore.tablePrefix = QRTZ_#============================================================================
# Configure Datasources配置数据源(可被覆盖,如果在schedulerFactoryBean指定数据源)
#============================================================================
org.quartz.dataSource.aiJobServer.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.aiJobServer.URL = jdbc:mysql://XX.XX.XX.XX:XXXX/trunk?useUnicode=true&characterEncoding=utf8
org.quartz.dataSource.aiJobServer.user = rd
org.quartz.dataSource.aiJobServer.password = rd
org.quartz.dataSource.aiJobServer.maxConnections = 10
#数据库别名 随便取
org.quartz.jobStore.dataSource = aiJobServer

四、Java实现代码

/**
*初始化定时任务
*/
public class VpnMplsOpenInit {public static void init(){//启动日报、周报、月报定时任务//scheduler配置的路径.propertiesString myJobSchedulerPath = SpringContextUtils.getBean("vpnOpenQuartz").toString();String hourStrDay = 3String minStrDay = 0Integer hourDay = 0;Integer minDay = 0;String weekStrWeek = IPNetHelper.getConfigProperties("RESOURCE_STATISTICS_WEEK_WEEK");String hourStrWeek = IPNetHelper.getConfigProperties("RESOURCE_STATISTICS_WEEK_HOUR");String minStrWeek = IPNetHelper.getConfigProperties("RESOURCE_STATISTICS_WEEK_MIN");Integer week = 0;Integer hourWeek = 0;Integer minWeek = 0;String monthStrMonth = IPNetHelper.getConfigProperties("RESOURCE_STATISTICS_MONTH_MONTH");String hourStrMonth = IPNetHelper.getConfigProperties("RESOURCE_STATISTICS_MONTH_HOUR");String minStrMonth = IPNetHelper.getConfigProperties("RESOURCE_STATISTICS_MONTH_MIN");Integer month = 0;Integer hourMonth = 0;Integer minMonth = 0;//周报是否执行boolean falgMonth = true;try {//创建调度器SchedulerFactory sf = new StdSchedulerFactory(myJobSchedulerPath);Scheduler scheduler = sf.getScheduler();Date startDate = null;if(falgDay){log.info("资源统计创建日报定时任务开始");//创建日报quart的任务信息对象JobDetail myJobDay = newJob(ResourceStatisticsDayJob.class).withIdentity(ResourceStatisticsDayJob, ResourceStatisticsDayJob + "-JobGroup").build();//设置触发器Trigger triggerDay = newTrigger().withIdentity(ResourceStatisticsDayJob, ResourceStatisticsDayJob + "-TriggerGroup").withSchedule(dailyAtHourAndMinute(hourDay, minDay)).build();startDate = scheduler.scheduleJob(myJobDay, triggerDay);log.info("资源统计创建日报定时任务开始");}if(falgWeek){log.info("资源统计创建周报定时任务开始");//创建日报quart的任务信息对象JobDetail myJobWeek = newJob(ResourceStatisticsWeekJob.class).withIdentity(ResourceStatisticsWeekJob, ResourceStatisticsWeekJob + "-JobGroup").build();//设置触发器Trigger triggerWeek = newTrigger().withIdentity(ResourceStatisticsWeekJob, ResourceStatisticsWeekJob + "-TriggerGroup").withSchedule(weeklyOnDayAndHourAndMinute(week,hourWeek, minWeek)).build();startDate = scheduler.scheduleJob(myJobWeek, triggerWeek);log.info("资源统计创建周报定时任务开始");}if(falgMonth){log.info("资源统计创建月报定时任务开始");//创建日报quart的任务信息对象JobDetail myJobMonth = newJob(ResourceStatisticsMonthJob.class).withIdentity(CResourceStatisticsMonthJob, ResourceStatisticsMonthJob + "-JobGroup").build();//设置触发器Trigger triggerMonth = newTrigger().withIdentity(ResourceStatisticsMonthJob, ResourceStatisticsMonthJob + "-TriggerGroup").withSchedule(monthlyOnDayAndHourAndMinute(month,hourMonth, minMonth)).build();startDate = scheduler.scheduleJob(myJobMonth, triggerMonth);log.info("资源统计创建月报定时任务开始");}if(falgDay || falgWeek || falgMonth){scheduler.start();}log.info("资源统计日报、周报、月报任务启动成功,任务定时时间: " + startDate);} catch (SchedulerException e) {log.error("资源统计日报、周报、月报任务启动失败, 创建任务异常: ", e);}}
}/**
*具体定时任务实现类
*/
public class ResourceStatisticsDayJob implements org.quartz.Job {/*** 执行日报* */public void execute(JobExecutionContext context) throws JobExecutionException {IServiceInterfaceApplyRemainDayModifyService service = (IServiceInterfaceApplyRemainDayModifyService)SpringContextUtils.getBean("serviceInterfaceApplyRemainDayModifyServiceImpl");service.modifyRemainDay();}
}

quartz 表结构、配置文件、实现说明相关推荐

  1. 【quartz表结构及说明】

    文章目录 一.quartz表信息 二.表字段说明 1.qrtz_blob_triggers 2.qrtz_calendars 3.qrtz_cron_triggers 4.qrtz_fired_tri ...

  2. Quartz表结构说明

    https://www.cnblogs.com/meet/p/Quartz-biao-jie-gou-shuo-ming.html

  3. 根据Ibatis的SqlMap配置文件生成表结构

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 有一份应用完整的源 ...

  4. quartz 2.x 表结构说明

    一.quartz 表说明 序号 表名 说明 1. qrtz_calendars 以 Blob 类型存储 Quartz 的 Calendar 信息 2. qrtz_cron_triggers 存储 Cr ...

  5. CGB2005 JT-1(jt概述 SqlYog 物理模型图PD 表结构 pom文件标签说明 jt环境搭建 创建项目2种,创建各种文件 idea导入,打包,删除项目,启动原理)

    注意事项: 1.京淘项目概述和动吧项目缺点描述 2.把sql文件导入数据库:通过SqlYog可视化工具或者Dos命令窗口. 3.SqlYog说明,和制作物理模型图的工具pd用发. 4.表结构学习 5. ...

  6. 菜鸟学SSH(十二)——Hibernate与Spring配合生成表结构

    前几天向大家介绍了一种用工具类生成数据表的方法,不过之前的方法需要使用一个跟项目关系不大的工具类.不免让人觉得有些多余,所以呢,今天再向大家介绍一种方法.即Hibernate与Spring配合生成表结 ...

  7. mysql jdbc 表结构_JavaEE_day09_MySQL多表JDBC

    一.数据库表结构: 首先,有两个表: 分类表:category create table category( cid varchar(32) primary key, cname varchar(10 ...

  8. 开源数据库表结构文档生成器

    大家好,我是TJ 一个励志推荐10000款开源项目与工具的程序员 TJ君前几天和一个在银行科技部上班的同学聚会,同学跟TJ君吐槽,一些小银行的科技表面看上去专业,实际各种马虎不负责. 打个比方,有一次 ...

  9. 如何将oracle数据库中的表结构导入到sqlserver中,Oracle转换成SqlServer数据库的步骤...

    1 背景 ITM系统目前支持MysqL.Oracle数据库,由于现在需要和CA产品进行结合,用CA产品的采集功能进行数据采集,因此需要使用CA产品的sqlServer数据库,为了使得系统支持sqlse ...

最新文章

  1. 继续聊WPF——Slider控件
  2. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) - D Count The Bits
  3. Adobe form batch output print mode - multiple
  4. MySQL 导出命令
  5. double在mysql中是什么类型_为什么PVC输送带深受企业的青睐?
  6. python rsa库_Python中rsa模块【sign 加签验签】的使用
  7. CCNA红头发视频教程全集---91lab
  8. DirectX 发展历程
  9. MemCached存储原理
  10. Faster RCNN论文总结
  11. Kossel 升级记 - 混乱之始
  12. The setting mapUnderScoreToCamelCase is not known. Make sure you spelled it correctly (case sensiti
  13. 计组(七)存储系统:芯片地址
  14. chrome所有页面崩溃【转载】
  15. cesium 起火_数字房子着火了
  16. 2018 年,做平凡世界里的超人
  17. http,post请求
  18. 接口测试要点及用例设计
  19. java 二叉树的最小深度详解
  20. jQuery控制 input 不可编辑

热门文章

  1. JAVA“包“的概念
  2. Java 下载远端图片到本地
  3. 车载TBOX嵌入式设备软件的性能测试
  4. 淘宝网店客服回复技巧和主动营销技巧
  5. centos系统安装rabbitMq
  6. 第四季度前三星手机将呈现两重惊喜
  7. JAVA将数值转化为以亿为单位_java将数字格式化为万或者以亿为单位
  8. 20191024日程计划
  9. 强烈推荐,阿里开源的11个神级项目
  10. Python爬虫-某某瓜网二手车数据