任务执行实体

/**
* 任务执行情况详情
*/
public class JobExecuteDetail implements Serializable{
/**
*
*/
private static final long serialVersionUID = 3145929362286951322L; /**
* 名称
*/
private String triggerName; /**
* 组名
*/
private String triggerGroup; /**
* 成功数
*/
private int successTimes = 0; /**
* 执行时间
*/
private String date; public String getTriggerName() {
return triggerName;
} public void setTriggerName(String triggerName) {
this.triggerName = triggerName;
} public String getTriggerGroup() {
return triggerGroup;
} public void setTriggerGroup(String triggerGroup) {
this.triggerGroup = triggerGroup;
} public int getSuccessTimes() {
return successTimes;
} public void setSuccessTimes(int successTimes) {
this.successTimes = successTimes;
} public String getDate() {
return date;
} public void setDate(String date) {
this.date = date;
} @Override
public String toString() {
return "JobExecuteDetail [triggerName=" + triggerName
+ ", triggerGroup=" + triggerGroup + ", successTimes=" + successTimes
+ ", date=" + date + "]";
}
}

执行的任务记录到队列,

JobExecuteDetailQueue是自己声明的一个队列
public class SerializableQuartzJobBean extends QuartzJobBean {
static final Logger logger = LoggerFactory.getLogger(SerializableQuartzJobBean.class); @Override
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException { JobExecuteDetail detail= new JobExecuteDetail(); try { Object otargetObject = ctx.getBean(targetObject); TriggerKey key = context.getTrigger().getKey(); detail.setTriggerGroup(key.getGroup());
detail.setTriggerName(key.getName());
detail.setDate(DateHelper.format(new Date(), "yyyy-MM-dd")); Method m = null;
try {
m = otargetObject.getClass().getMethod(targetMethod, new Class[] {});
m.invoke(otargetObject, new Object[] {}); detail.setSuccessTimes(1);
} catch (SecurityException e) {
e.printStackTrace();
logger.error("任务调度运行出错:", e);
} catch (NoSuchMethodException e) {
e.printStackTrace();
logger.error("任务调度运行出错:", e); }
} catch (Exception e) {
throw new JobExecutionException(e);
} finally {
JobExecuteDetailQueue jobExecuteDetailQueue = ctx.getBean(JobExecuteDetailQueue.class);
jobExecuteDetailQueue.offer(detail);
} } private ApplicationContext ctx;
public void setApplicationContext(ApplicationContext applicationContext) {
this.ctx = applicationContext;
} private String targetObject;
public void setTargetObject(String targetObject) {
this.targetObject = targetObject;
} private String targetMethod;
public void setTargetMethod(String targetMethod) {
this.targetMethod = targetMethod;
}
}

从队列中取出任务执行的内容存入数据库即可

Quartz实现执行任务记录数据库,方便计算任务的执行次数以及成功次数的更多相关文章

  1. 一个简单的使用Quartz和Oozie调度作业给大数据计算平台执行

    一,介绍 Oozie是一个基于Hadoop的工作流调度器,它可以通过Oozie Client 以编程的形式提交不同类型的作业,如MapReduce作业和Spark作业给底层的计算平台(如 Cloude ...

  2. 使用aop记录数据库操作的执行时间

    在项目中,我们往往需要记录数据库操作的时间,根据操作时间的不同,分别记录不同等级的日志. 首先我们可以写一个类实现MethodInterceptor接口: import org.aopalliance ...

  3. c# 数据库编程(通过SqlCommand 执行DML语句)

    原来一直是java,python等语言,最近用c#语言,并编写数据库访问代码.使用了之后,这里总结下,分享下c#如何操作数据库. 在java等其它语言中,有一套标准的api来完成数据库访问,并且一般都 ...

  4. 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测

    如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...

  5. ylbtech-Recode(记录)-数据库设计

    ylbtech-dbs:ylbtech-Recode(记录)-数据库设计 -- =============================================-- DatabaseName ...

  6. 内容观察者 ContentObserver 监听短信、通话记录数据库 挂断来电

    Activity public class MainActivity extends ListActivity {     private TextView tv_info;     private  ...

  7. SQL 2005 中查询或执行另外的数据库操作的方法

    原文:SQL 2005 中查询或执行另外的数据库操作的方法 摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据, ...

  8. 让FIREDAC记录数据库的异常日志

    默认FIREDAC不会记录数据库的异常. 比如典型的,提交的时候,非空字段没有给值. 某些人还以为FIREDAC不能捕获数据库的异常,其实FIREDAC是可以捕获并处理数据库的异常事件的. 方法异常简 ...

  9. OpenStack(queens)最小化搭建记录——控制与计算共两个节点

    境: 2台安装了centos7-minimal的主机 ip地址: 10.132.226.103/24 (controller) 10.132.226.104/24 (compute1) 1.配置主机名 ...

随机推荐

  1. log4net 局部代码 看不懂....

    public interface ILogger {} public interface ILoggerWrapper { ILogger Logger {get;} } public interfa ...

  2. Linux下/var/log/btmp文件

    今天查看了一下服务器,发现/var/log/btmp日志文件比较大占用磁盘空间,搜索一下,此文件是记录错误登录的日志,就是说有很多人试图使用密码字典登录ssh服务,此日志需要使用lastb程序打开. ...

  3. vim三种模式

    一般模式 以vi打开一个文件就直接进入一般模式了.一般模式下可以移动光标查看内容,通过ESC回到一般模式. 一般模式下常用的操作: 撤销与重做 命令 说明 u 复原上一个操作 . 小数点 重复上一个操 ...

  4. 洛谷——P3205 [HNOI2010]合唱队

    P3205 [HNOI2010]合唱队 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为 ...

  5. navicate远程访问ubuntu上的mysql数据库

    安装mysql 首先检查系统中是否已经安装了MySQL,在终端里面输入: sudo netstat -tap | grep mysql 如上所示就是正确安装并启动,启动命令为 sudo /etc/in ...

  6. 强悍的 ubuntu —— 命令行访问网页

    所谓以命令行的方式访问网页,即是在终端下以文本的形式访问网站,这里推荐一个工具:w3m, $ sudo apt-get install w3m $ w3m www.baidu.com

  7. 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论

    1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据 ...

  8. 【BestCoder Round #93 1001】MG loves gold

    [题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=6019 [题意] 每次选择一段连续的段,使得这一段里面没有重复的元素; 问你最少选多少次; [题解] ...

  9. hdu 4171 最短路

    #include<stdio.h> #include<string.h> #include<queue> #include<iostream> usin ...

  10. Java多线程之如何确定线程数

    关于多线程的线程数的确定,最近研读过几篇paper,在此做一下笔记,方便使用时翻看. 1.<Java 虚拟机并发编程>中介绍 就是说:线程数 =  CPU的核心数 * (1 - 阻塞系数) ...