quartz项目中的运用
下面是之前项目中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项目中的运用的更多相关文章
- 项目中使用Quartz集群分享--转载
项目中使用Quartz集群分享--转载 在公司分享了Quartz,发布出来,希望大家讨论补充. CRM使用Quartz集群分享 一:CRM对定时任务的依赖与问题 二:什么是quartz,如何使用, ...
- 初识quartz 并分析 项目中spring整合quartz的配置【原创+转载】
初识quartz 并分析 项目中spring整合quartz的配置[原创+转载]2018年01月29日 12:08:07 守望dfdfdf 阅读数:114 标签: quartz 更多个人分类: 工具 ...
- 在springboot项目中引入quartz任务调度器。
quartz是一个非常强大的任务调度器.我们可能使用它来管理我们的项目,常见的是做业绩统计等等.当然它的功能远不止这些.我们在这里不介绍quartz的原理,下面讲讲如何在springboot中使用qu ...
- spring项目中使用定时任务
当我们希望在某个时间点来执行一些业务方法的时候就用到定时任务,在spring的项目中使用定时任务很简单.如下 第一步.加入jar包 <dependency> <groupId> ...
- spring项目中如何添加定时器以及在定时器中自动生成sprng注入对象
最近做了一个java的项目,部门领导给了一套代码让我尽快掌握,说心里话本人真心不喜欢java的这种项目方式,各种配置各种xml文件简直头都大了,下面就将我遇到的其中一个我认为是坑的地方整理出来,希望能 ...
- 使用configuration配置结束在quartz.net中使用硬编码Job,Trigger任务提高灵活性
经常在项目中遇到定时任务的时候,通常第一个想到的是Timer定时器,但是这玩意功能太弱鸡,实际上通常采用的是专业化的第三方调度框架,比如说 Quartz,它具有功能强大和应用的灵活性,我想使用过的人都 ...
- spring boot项目中处理Schedule定时任务
项目中,因为使用了第三方支付(支付宝和微信支付),支付完毕后,第三方支付平台一般会采用异步回调通知的方式,通知商户支付结果,然后商户根据通知内容,变更商户项目支付订单的状态.一般来说,为了防止商户项目 ...
- java web 项目中 简单定时器实现 Timer
java web 项目中 简单定时器实现 Timer 标签: Java定时器 2016-01-14 17:28 7070人阅读 评论(0) 收藏 举报 分类: JAVA(24) 版权声明:本文为博 ...
- maven Web项目中POM的配置信息
什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml.在Maven中,当谈到Project的时候, ...
随机推荐
- 线段树【SP1043】GSS1 - Can you answer these queries I
Description 给出了序列\(A_1,A_2,-,A_n\). \(a_i \leq 15007,1 \leq n \leq 50000\).查询定义如下: 查询\((x,y)=max{a_i ...
- HashMap和Hashtable 线程安全性
HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题.HashMap的工作原理.ArrayList与Vect ...
- Map集合-根据宠物昵称查找宠物
package collection; /** * 宠物类 * @author * */ public class Pet { private String name; private String ...
- 64位系统下powerdesigner15连接oracle odbc
操作系统:win2008 64 Oracle版本:64位11g PowerDesigner版本:15.1 问题描述:因为PowerDesigner是32的程序,连接数据库会默认开启32位的ODBC,因 ...
- Delphi7 实现窗体全屏方法
设置要全屏的窗体的ALign 属性为ALcLient ,此法最快.当然对我来说,我并不知道这个,所以走了远路,等后来在实现窗体禁止移动的时候才想到了这里,汗.注意:这种全屏方式不会挡了系统的任务栏.. ...
- Http标准协议Android网络框架——NoHttp
NoHttp详细文档:http://doc.nohttp.net NoHttp公益测试接口:http://api.nohttp.net 支持与RxJava完美结合.支持一句话切换底层为OkHttp,支 ...
- System.Runtime.InteropServices.COMException
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for compo ...
- textureView
textureView是用来访问texture的一部分的 cubemap 和 mipmap会用到这个 for(face =0;face<6;face++) setrendertarget(tex ...
- 2017.7.1 nginx反向代理服务器域名解析配置(已验证可使用)
下载地址:http://learning.happymmall.com/ 前提:ftpserver已经开启,并且设置为: 1.获得安装文件 2.修改配置文件 2.1 修改conf/nginx.conf ...
- 2017.4.18 putty和fileZilla的使用
putty:用来连接环境. fileZila:用来传递文件. (1)连接环境 centOS 7 点击putty.exe,输入地址.用户名.密码进行连接.端口输入22.用账号和密码登录. 进入到目录下, ...