下面是之前项目中quartz的运用,我将它梳理出来。

测试类:

public class OrdExpireTaskMain {
public static void main(String[] args) {
String[]agrs=new String[]{"EXPIRE_TASK_571_CS","1","0"};
try {
TaskFrameWork.main(agrs);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

上面的测试类一个参数是CFG_TASK_TYPE_CODE,第二个取模,第三个是根据值进行取模,通过调用框架的main函数,来执行调度任务。

1:首先根据先获取任务的一个配置文件,通过配置文件我们可以更灵活。比如可以配置调度表达式,名称等
代码片段

  Properties prop = ResourceUtil.loadPropertiesFromClassPath("task/task.properties", "task", true);
if ((!(StringUtils.isBlank(prop.getProperty("bootPauseSeconds"))))&& (StringUtils.isNumeric(prop.getProperty("bootPauseSeconds"))))
{
bootPauseSeconds = Long.parseLong(prop.getProperty("bootPauseSeconds").trim());
}

注:bootPauseSeconds 是当前任务启动暂停时间
2:new StdSchedulerFactory(prop)一个 对象,
根据这个对象get一个调度实例(scheduler)
    -----> 然后设置任务明细(JobDetail),调度策略(Trigger)
    ----->然后启动任务(start)
    ----->sleep当前线程
3:这个调度的实现类是TaskScanJob
taskScanJob:这个任务类是从csf_task 表中取出任务数据
代码片段

            JobDataMap data = context.getJobDetail().getJobDataMap();

            String taskType = data.getString("TASK_TYPE");
long mod = data.getLong("DATASPLIT_MOD");
long value = data.getLong("DATASPLIT_VALUE"); ITaskSV objITaskSV = (ITaskSV)ServiceFactory.getService(ITaskSV.class);
IBOCfgTaskValue[] objIBOCfgTaskValue = objITaskSV.getCfgTaskByTaskType(taskType, mod, value);

判断当前是否还有任务在执行,根据当前任务的任务名称和任务组名称,如果相等就是有任务上次扫描的任务在执行,就等待这次扫描的任务执行完。

如果不相等就在之前的context重置他的scheduler 调度任务,创建过程:
(1)创建JobDetail, jobDetail 的任务类是taskJob.class
(2)创建Trigger 首先取出csgTaskValue中的taskMethod,判断如果是C,就创建CronTrigger;如果不是就创建SimpleTrigger
(3)在当前的jobDataMap中put  TASK_CFG_ID
(4)重置调度任务

taskJob.class 类是处理cfgTaskValue的类,也是调度我们处理任务的真正实现类
(1)取出 TASK_CFG_ID 的id,查出cfgTaskValue,cfgTaskValue 就是保存处理数据的value。首先记录value的日志。
(2)根据value的businessClass,获取class的实例
(3)调用业务类的doTask
(4)并将task的执行结果update到日志表中

quartz项目中的运用的更多相关文章

  1. 项目中使用Quartz集群分享--转载

    项目中使用Quartz集群分享--转载 在公司分享了Quartz,发布出来,希望大家讨论补充. CRM使用Quartz集群分享  一:CRM对定时任务的依赖与问题  二:什么是quartz,如何使用, ...

  2. 初识quartz 并分析 项目中spring整合quartz的配置【原创+转载】

    初识quartz 并分析 项目中spring整合quartz的配置[原创+转载]2018年01月29日 12:08:07 守望dfdfdf 阅读数:114 标签: quartz 更多个人分类: 工具 ...

  3. 在springboot项目中引入quartz任务调度器。

    quartz是一个非常强大的任务调度器.我们可能使用它来管理我们的项目,常见的是做业绩统计等等.当然它的功能远不止这些.我们在这里不介绍quartz的原理,下面讲讲如何在springboot中使用qu ...

  4. spring项目中使用定时任务

    当我们希望在某个时间点来执行一些业务方法的时候就用到定时任务,在spring的项目中使用定时任务很简单.如下 第一步.加入jar包 <dependency> <groupId> ...

  5. spring项目中如何添加定时器以及在定时器中自动生成sprng注入对象

    最近做了一个java的项目,部门领导给了一套代码让我尽快掌握,说心里话本人真心不喜欢java的这种项目方式,各种配置各种xml文件简直头都大了,下面就将我遇到的其中一个我认为是坑的地方整理出来,希望能 ...

  6. 使用configuration配置结束在quartz.net中使用硬编码Job,Trigger任务提高灵活性

    经常在项目中遇到定时任务的时候,通常第一个想到的是Timer定时器,但是这玩意功能太弱鸡,实际上通常采用的是专业化的第三方调度框架,比如说 Quartz,它具有功能强大和应用的灵活性,我想使用过的人都 ...

  7. spring boot项目中处理Schedule定时任务

    项目中,因为使用了第三方支付(支付宝和微信支付),支付完毕后,第三方支付平台一般会采用异步回调通知的方式,通知商户支付结果,然后商户根据通知内容,变更商户项目支付订单的状态.一般来说,为了防止商户项目 ...

  8. java web 项目中 简单定时器实现 Timer

    java web 项目中 简单定时器实现 Timer 标签: Java定时器 2016-01-14 17:28 7070人阅读 评论(0) 收藏 举报  分类: JAVA(24)  版权声明:本文为博 ...

  9. maven Web项目中POM的配置信息

    什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml.在Maven中,当谈到Project的时候, ...

随机推荐

  1. 最小生成树 (Minimum Spanning Tree,MST) --- Kruskal算法

    本文链接:http://www.cnblogs.com/Ash-ly/p/5409265.html 引导问题: 假设要在N个城市之间建立通信联络网,则连通N个城市只需要N - 1条线路.这时,自然会考 ...

  2. Python与数据结构[0] -> 链表/LinkedList[2] -> 链表有环与链表相交判断的 Python 实现

    链表有环与链表相交判断的 Python 实现 目录 有环链表 相交链表 1 有环链表 判断链表是否有环可以参考链接, 有环链表主要包括以下几个问题(C语言描述): 判断环是否存在: 可以使用追赶方法, ...

  3. 腾讯消消乐 (状态压缩DP)

    腾讯消消乐 题意 给出长度为 n 的序列,每次可以选择删除序列的一个连续区间,要求这一段区间内所有数最大公约数不小于 k ,删除后剩下的序列仍然构成连续序列. 定义 f(i) 为进行 i 次操作将整个 ...

  4. [Usaco2010 Nov]Visiting Cows

    题目描述 经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统 ...

  5. 无需重新编译php加入ftp扩展的解决方法

    无需重新编译php加入ftp扩展的解决方法   本文为大家介绍无需重新编译php加入ftp扩展的方法,有需要的朋友可以参考下   首先,进入源码目录cd php-5.2.13/ext/ftp #运行p ...

  6. Linux的五个查找命令:find,locate,whereis,which,type 及其区别

    1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> ...

  7. C#练习DataReader(转载)

    本文转自http://www.cnblogs.com/Mysterious/p/3422901.html SQL代码: create database ThreeDb go USE ThreeDb; ...

  8. 装饰者模式对HttpServletRequest进行增强

    package cn.web.servlet; import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpS ...

  9. adb 设备不识别

    android真坑 有两台测试机 都能连能snapdragon profiling了 忽然 一台不能识别了 adb devices 就不存在 一台一直是好的 kill server start ser ...

  10. Linux增加挂载盘

    命令:fdisk /dev/sdb, m 命令:m,n,e,1,p,w 命令:mkfs -t ext4 /dev/sdb,y 挂载命令:mount -t ext4 /dev/sdb /data 获取U ...