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

玩转 quartz quartz 教程 quartz 实现 quartz 封装

阅读更多

转载请表明出处,作者 keyboardsun

 

需要源代码,发邮件到keyboardsun@163.com

代码可以直接使用。

 

 

最近在开发JDF项目。项目中需要用到任务调度,自动任务等功能,想自己开发一个,但是看看 quartz    那么强劲,自己开发,开发加调试,可能需要些时日。如果用quartz可能一天就可以搞定,只需要配置点数据就可以了。

 

下面步入正题。讲解quartz的封装使用。

 

这里我把任务,以及任务的表达式配置到数据库里面。

 

如图:

 

如上图所示,配置了三个任务。

表结构介绍:

 

字段介绍:

TASK_ID 任务的主键

TASK_CODE 任务编码 ,这里启动任务的时候,作为qz任务的名称

TASK_TYPE_CODE 任务类型,这里启动任务的时候,作为qz任务的分组

TASK_IMPL_CLASS 任务的类。

TASK_EXPRESS 任务执行表达式

STATE_DATE 任务更新时间,这里在任务运行中,如果需要使运行中的任务修改立马生效,需要把这个字段的值设置大于当前时间。

STATE 任务状态

PARMS 任务初始化参数,任务运行的时候,可以从JobDataMap对象中获取该字段的值。

CREATE_DATE 创建日期,没有什么实际意义。

 

下面需要记录任务执行的日志,如下图所示

如上图所示,log编号是12 的任务正在执行中... STATE是R =run

字段解释

 

TASK_LOG_ID 任务日志编号

TASK_ID 任务编号

STATE 执行状态,如果是E 的,说明异常了,异常信息会放在REMARKS字段中

START_DATE 执行开始时间

FINISH_DATE 执行结束时间

REMARKS 备注。

 

下面要开始贴代码啦:如下图所示,一共包括如下这么多的JAVA文件。

 

一共包括文件为:

ITask.java 业务系统需要实现的接口方法。

JDBC.java 简单的数据库操作类

JobEngine 用于修改运行中的job的信息,定时扫描JOB_TASK配置表的改变信息。

JobTaskBean.java 表JOB_TASK对应的bean

Mouse.java 入口类,启动qz引擎。

Task.java 抽象类,用于记录qz 任务的日志,业务系统的任务需要继承这个类。

TaskLogBean.java 任务日志表TASK_LOG对应的Bean.

Test.java 测试任务。

 

下面开始贴代码啦:

ITask.java

 

JDBC.java

 

 

JobEngine.java

 

 

JobTaskBean.java

 

 

Mouse.java

 

 

Task.java

 

 

TaskLogBean.java

 

 

 

Test.java

 

 

下面我们在数据库里面添加两条任务。

 

INSERT INTO `job_task` VALUES ('1', 'TEST1', 'G1', 'net.chinacsharp.jdf.quartz.Test', '0/25 * * * * ?', '2009-07-09 16:48:00', 'U', '<item><key>sss</key><value>vvv</value></item><item><key>ss</key><value>vv</value></item>', null, '2009-07-07 16:07:41');
INSERT INTO `job_task` VALUES ('2', 'TEST2', 'G1', 'net.chinacsharp.jdf.quartz.Test', '0/20 * * * * ?', '2009-07-09 17:19:21', 'U', '<item><key>sss</key><value>vvv</value></item><item><key>ss</key><value>vv</value></item>', null, '2009-07-08 16:07:20');
INSERT INTO `job_task` VALUES ('3', 'TESTENGINE', 'ENG', 'net.chinacsharp.jdf.quartz.JobEngine', '0/7 * * * * ?', '2009-07-09 16:48:00', 'U', '<item><key>sss</key><value>vvv</value></item><item><key>ss</key><value>vv</value></item>', null, '2009-07-07 16:07:41');

 

这里的第三条任务是必须的。用于扫描JOB_TASK表的改动,及时把改动的部分覆盖到现有执行中的任务。

 

下面我们运行任务

 

 

我们查看日志信息

 

 

下面我们把执行的任务给改动下。

 

 

这里我把TASK_EXPRESS修改为 每秒执行1次,每2秒执行一次,然后把STATE_DATE的日期调整到迟与当前时间,这样JobEngine任务就可以扫描到改动了。下面我们看日志

如上所示,任务执行快多了噢。每秒就在执行。

 

下面我们察看执行的日志

 

 

下面我们自己开发一个任务把。如果你想自己开发一个任务,那么很简单,只需要两个步骤:

步骤一,新建一个类,继承Task.java实现execute(HashMap map)借口便可以

 

第二步:我们在表JOB_TASK配置任务。 这里把现有的人给改成不可用。减少日志输出,如下图

 

我们把1,2任务给关了,状态O了。把DEMO任务配置成每20秒执行一次。 PARMS字段为

<item><key>sss</key><value>vvv</value></item><item><key>ss</key><value>vv</value></item>

 

下面我们运行,察看日志:

 

这里20秒执行了一次,下面我们把任务的TASK_EXPRESS改成0/2 * * * * ?

 STATE_DATE 改成 2009-07-15 20:30:31

这样就两秒执行一次,我们看输出:

 

这里两秒执行一次了噢。

 

分享到:
评论
1 楼 keyboardsun 2009-11-19  
keyboardsun 发表于2009年7月10日 9:29:33  IP:举报删除
本文章对应的源代码请到 http://download.csdn.net/source/1477754 下载

相关推荐

    对Quartz的简单封装

    Quartz是一款广泛使用的开源任务调度框架,用于在Java应用程序中实现定时任务的执行。...如果你正在寻找一种方式来管理和调度Java应用程序中的定时任务,那么学习这个封装的Quartz实现可能会对你有所帮助。

    quartz封装

    4. **Quartz封装实现** - 可以创建一个JobFactory,用于生成自定义的Job实例。 - 设计一个JobStore,用于存储Job和Trigger的信息,可以选择内存型或数据库型。 - 提供配置文件,用于设置Scheduler的属性,如...

    quartz scheduler 入门教程

    quartz scheduler 入门教程 Quartz Scheduler 是一种功能丰富、开源的任务调度程序库,可以在任何 Java 程序中使用。它可以用来创建简单或者复杂的执行次数可以达成千上万的任务。任务可以是任何 Java 可以做的事情...

    定时任务quartz实现分组串行并行动态配置

    本篇文章将深入探讨如何利用Quartz实现定时任务的分组、串行和并行动态配置。 首先,理解Quartz的核心概念是必要的。`Job`是执行任务的基本单元,`Trigger`则决定了何时触发Job。Quartz提供了`Scheduler`来管理和...

    Quartz详细入门教程

    非常详细的Quartz详细入门教程。新手值得一看,高手请忽略。

    定时任务quartz及教程

    本教程将深入探讨Quartz的核心概念、配置、API使用以及如何在实际项目中集成和管理定时任务。 一、Quartz核心概念 1. 作业(Job):在Quartz中,作业是需要执行的任务的抽象,它是一个实现了`org.quartz.Job`接口...

    Quartz任务调度框架教程中文版

    Quartz任务调度框架教程中文版 chm格式

    SpringBoot 整合Quartz(集群)实现定时任务调度

    SpringBoot整合Quartz实现定时任务调度是企业级应用中常见的需求,主要用于自动化执行某些周期性的任务,例如数据备份、报表生成、系统维护等。Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度...

    Autofac.Extras.Quartz, Quartz.Net的Autofac集成.zip

    Autofac.Extras.Quartz, Quartz.Net的Autofac集成 Autofac.Extras.Quartz用于 Quartz.Net的Autofac集成包。Autofac.Extras.Quartz 为每个石英作业创建嵌套的litefime作用域。 完成作业执行后释放嵌套作用域。这允许...

    Quartz源码+视频教程

    Quartz 是一种功能丰富的,开放源码的作业调度库,可以在几乎任何Java应用程序集成 - 从最小的独立的应用程序到规模最大电子商务系统。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数 -...

    quartz 实现按天、按周、按月定时任务的简单demo

    Quartz 是一个强大的开源作业调度框架,用于在 Java 应用程序中实现复杂的时间调度任务。它允许开发者创建、调度和执行周期性任务,而无需直接处理线程或时间触发器。在这个“quartz 实现按天、按周、按月定时任务的...

    Quartz 定时WebForm和WinForm使用的dll

    在本例中,Quartz的核心功能就封装在这些DLL文件中。 1. Quartz.dll:这是Quartz的主要库文件,包含了所有用于创建、管理和执行定时任务的类和接口。例如,`IScheduler`接口用于管理和控制调度器,`ITrigger`接口...

    自开发实现Quartz Web管理工具

    从以上位置可以查看详细介绍。 网上能找到的Quartz Web管理的资料都是使用的一个国外人写...包括可以添加一个任务(添加的任务只能是实现了Quartz Job接口的任务),暂停、启动、删除任务。基本这些都能满足日常应用了。

    quartz整合springbatch动态集群定时实现mysql参考

    在Quartz中实现动态集群,主要是通过共享JobStore实现的,例如使用SQLJobStore,这样所有节点都可以访问同一个作业存储,从而确保任务的一致性和避免冲突。 在这个项目中,结合Quartz和Spring Batch,开发者可能...

    quartz-1.6.0.jar和quartz-all-1.6.0.jar

    Quartz是Java领域的一款强大的开源任务调度框架,它允许开发者创建和管理定时任务,从而实现应用程序的自动执行功能。在给定的压缩包文件中,我们有两个版本为1.6.0的Quartz JAR包:`quartz-1.6.0.jar`和`quartz-all...

    ASP.NET使用Quartz.NET实现定时任务调度

    Quartz.NET则是一个开源的作业调度库,适用于.NET平台,能够帮助开发者在.NET应用中实现复杂的时间驱动任务。结合使用Quartz.NET和TopShelf,我们可以构建一个在Windows服务中运行的定时任务调度系统。 Quartz.NET...

    Springboot整合Quartz实现定时任务数据库动态配置

    本篇文章将详细探讨如何在Spring Boot项目中整合Quartz,并通过MySQL数据库实现定时任务的动态配置。 首先,我们需要在项目中添加依赖。在Spring Boot的`pom.xml`文件中,引入Spring Boot的`spring-boot-starter-...

    quartz quartz-1.8.6 dbTables 建表sql

    正确设置并使用这些数据库表后,Quartz就可以在数据库中持久化作业和触发器的状态,即使应用程序重启,也能恢复之前设定的调度信息,实现任务的连续性和可靠性。 总之,"quartz quartz-1.8.6 dbTables" 提供了构建...

Global site tag (gtag.js) - Google Analytics