`
John_Kong19
  • 浏览: 270971 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Quartz任务调度快速入门9

阅读更多

下面我们来观察一下不同时期qrtz_simple_triggers表的数据:

1.运行代码清单2的SimpleTriggerRunner一小段时间后退出:

Quartz任务调度快速入门

REPEAT_COUNT表示需要运行的总次数,而TIMES_TRIGGER表示已经运行的次数。

2.运行代码清单7的JDBCJobStoreRunner恢复trigger1_1的触发器,运行一段时间后退出,这时qrtz_simple_triggers中的数据如下:

Quartz任务调度快速入门

首先Quartz会将原REPEAT_COUNT-TIMES_TRIGGER得到新的REPEAT_COUNT值,并记录已经运行的次数(重新从0开始计算)。

3.重新启动JDBCJobStoreRunner运行后,数据又将发生相应的变化:

Quartz任务调度快速入门

4.继续运行直至完成所有剩余的次数,再次查询qrtz_simple_triggers表:

Quartz任务调度快速入门

这时,该表中的记录已经变空。

值得注意的是,如果你使用JDBC保存任务调度数据时,当你运行代码清单2的SimpleTriggerRunner然后退出,当再次希望运行SimpleTriggerRunner时,系统将抛出JobDetail重名的异常:

Unable to store Job with name: 'job1_1' and group: 'jGroup1', because one already exists with this identification.

因为每次调用Scheduler#scheduleJob()时,Quartz都会将JobDetail和Trigger的信息保存到数据库中,如果数据表中已经同名的JobDetail或Trigger,异常就产生了。

本文使用quartz 1.6版本,我们发现当后台数据库使用MySql时,数据保存不成功,该错误是Quartz的一个Bug,相信会在高版本中得到修复。因为HSQLDB不支持SELECT * FROM TABLE_NAME FOR UPDATE的语法,所以不能使用HSQLDB数据库。

小结

Quartz提供了最为丰富的任务调度功能,不但可以制定周期性运行的任务调度方案,还可以让你按照日历相关的方式进行任务调度。Quartz框架的重要组件包括Job、JobDetail、Trigger、Scheduler以及辅助性的JobDataMap和SchedulerContext。

Quartz拥有一个线程池,通过线程池为任务提供执行线程,你可以通过配置文件对线程池进行参数定制。Quartz的另一个重要功能是可将任务调度信息持久化到数据库中,以便系统重启时能够恢复已经安排的任务。此外,Quartz还拥有完善的事件体系,允许你注册各种事件的监听器。

分享到:
评论

相关推荐

    Quartz任务调度快速入门

    Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述

    Quartz调度任务学习(快速开发入门)(转)

    Quartz调度任务学习(快速开发入门),帮助你快速掌握Quartz的开发,使用性较强

    Quartz 任务调度

    Quartz 任务调度,入门基本资料,同时附带一些案例, 可以结合案例在项目中进行开发

    任务调度Quartz框 架

    任务调度Quartz框 架 ,很适合入门的人

    Quartz(作业调度)

    1.spring框架使用任务调度quartz的例子。 2.Web App用Quartz实现java schedule 3.详细讲解Quartz如何从入门到精通 4.用 Quartz 进行作业调度

    quartz1.5.0 任务调度demo

    包含增删改功能。 快速入门,任务调度三大核心类:JobDetail Trigger Scheduler

    Quartz中文入门教程

    Quartz让任务调度简单 Quartz的发展史 上手Quartz Quartz内部架构 作业 作业管理和存储 有效作业存储 作业和触发器 调度一个作业 用调度器(Scheduler)调用你的作业 编程调度同声明性调度 有状态和无...

    quartz1.6.6 实例

    这是一个本人自主编写的quartz调度框架的入门实例,非常简单,无配置文件,纯java调度,main 方法执行,控制台输出,可作为quartz框架的入门学习使用

    Quartz入门案例

    Quartz入门案例,QuartzManager管理器,简单任务调度案例和说明。

    Python中定时任务框架APScheduler的快速入门指南

    APScheduler是基于Quartz的一个python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。 APScheduler提供了多种不同的调度器,...

    基于 Spring Boot 2.X 版本的深度入门教程

    一个涵盖六个专栏:Spring Boot 2.X、Spring Cloud、Spring Cloud Alibaba、Dubbo、分布式消息队列...快速学会 Job 任务的编写的同时,我还想告诉你还有 Quartz 单体、Quartz 集群、XXL-JOB 等等企业使用更多的调度平台

    QuartSample.rar

    这个demo主要是讲的如何在window服务下使用quartz.net 执行调度,那么为什么我要在window服务下去执行任务调度呢?其实 对应项目托管而已,IIS默认最长空闲休眠时间为20分钟,也就是说假如站点20分钟内无人访问的话...

    Spring Boot 2.X、Spring Cloud、Spring Cloud Alibaba、Dubbo、分布式.zip

    Spring Boot 专栏 基于 Spring Boot 2.X ...在带你快速学会 Job 任务的编写的同时,我还想告诉你还有 Quartz 单体、Quartz 集群、XXL-JOB 等等企业使用更多的调度平台。 ... 让我们一起愉快的挖坑,挖深坑,哇哈哈。

    Spring boot+Mybatis整合实现增删改查(适合初学者入门必备也可以做脚手架开发)

    5.添加定时任务:不再使用作业自动调度框架Quartz实现作业调度,使用spring框架自带的调度器进行作业调度,简化了配置。@Scheduled是单线程的,每次最多只有一个作业在运行,如果调度时间到了作业还没执行完,就会...

    db-scheduler:Java的持久性群集友好调度程序

    Java任务计划程序的灵感来自对集群的java.util.concurrent.ScheduledExecutorService的需求,它比Quartz更简单。 因此,也受到用户的赞赏( , ): 你的lib摇滚! 我很高兴我摆脱了Quartz,取而代之的是您的...

    java8源码-learn-demo:平时学习的小例子

    学习定时任务调度工具详解quartz demo-04-springboot SpringBoot入门 demo-05-spring-annotation spring中常用注解 demo-06-java8 java8的一些新特性 demo-07-netty-tomcat 基于netty实现tomcat demo-08-netty-im ...

    Java后端知识图谱帮助Java初学者成长.rar

    学习一个新的技术时,其实不在于跟着某个教程敲出了几行、几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一...任务调度:Spring Task + Quartz 持久层框架: MyBatis + MyBatis-P

    网上电商源码java-jeeplus:jeeplus是MutilMavenModoulsJ2EE应用程序

    网上电商源码 java 介绍 jeeplus 是在 Spring 框架之上完全用 Java 编写的开源电子商务框架。 它旨在通过提供强大的数据模型、服务和专门工具...任务调度 jeeplus 中重复性任务的调度是通过 Quartz 作业调度系统提供的

Global site tag (gtag.js) - Google Analytics