文档章节

Quartz 动态生成任务

奋斗的小菜一碟
 奋斗的小菜一碟
发布于 2015/12/21 18:02
字数 1048
阅读 122
收藏 13
点赞 0
评论 0

Bean类

@Entity

@Table(name = "MYTASK")

public class MyTask implements Serializable{


/**

*/

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

/**

* 任务名

*/

@Column(name="JOB_NAME",nullable=false)

private String jobName;

/**

* 任务组名

*/

@Column(name="GROUP_NAME",nullable=false)

private String groupName;

/**

* 触发器名

*/

@Column(name="TRIGGER_NAME",nullable=false)

private String triggerName;

/**

* 触发器组名

*/

@Column(name="TRIGGER_GROUP_NAME",nullable=false)

private String triggerGroupName;

/**

* 任务

*/

@Column(name="JOB",nullable=false)

private String job;

/**

* cron表达式

*/

@Column(name="TIME",nullable=false)

private String time;

/**

* 任务状态

* 0未启动

* 1启动

* 2暂停

* 3停止

*/

@Column(name="STATUS")

private Integer status=0;

/**

* 备注

*/

@Column(name="ISDELETE",nullable=false)

private Integer isdelete=0;

@Column(name="NOTE")

private String note;

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getJobName() {

return jobName;

}

public void setJobName(String jobName) {

this.jobName = jobName;

}

public String getGroupName() {

return groupName;

}

public void setGroupName(String groupName) {

this.groupName = groupName;

}

public String getJob() {

return job;

}

public void setJob(String job) {

this.job = job;

}

public String getTime() {

return time;

}

public void setTime(String time) {

this.time = time;

}

public Integer getStatus() {

return status;

}

public void setStatus(Integer status) {

this.status = status;

}

public String getTriggerName() {

return triggerName;

}

public void setTriggerName(String triggerName) {

this.triggerName = triggerName;

}

public String getTriggerGroupName() {

return triggerGroupName;

}

public void setTriggerGroupName(String triggerGroupName) {

this.triggerGroupName = triggerGroupName;

}

public Integer getIsdelete() {

return isdelete;

}

public void setIsdelete(Integer isdelete) {

this.isdelete = isdelete;

}

public String getNote() {

return note;

}

public void setNote(String note) {

this.note = note;

}


}

maven配置

<dependency>

    <groupId>org.quartz-scheduler</groupId>

    <artifactId>quartz</artifactId>

    <version>2.2.2</version>

</dependency>

<dependency>

    <groupId>org.quartz-scheduler</groupId>

    <artifactId>quartz-jobs</artifactId>

    <version>2.2.2</version>

</dependency>


/**

动态生成任务类

*/

public class QuartzManager { 

private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory();  

 

   /** 

    * @Description: 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名 

    *  

    * @param jobName 

    *            任务名 

    * @param cls 

    *            任务 

    * @param time 

    *            时间设置,参考quartz说明文档 

    *  

    */  

   @SuppressWarnings("unchecked")  

   public static void addJob(String jobName, Class cls, String time) {  

       try {

           Scheduler sched = gSchedulerFactory.getScheduler();  

           //JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, cls);// 任务名,任务组,任务执行类  

           JobDetail jobDetail = JobBuilder.newJob(cls).withIdentity(

           jobName, JOB_GROUP_NAME).usingJobData("domain",

           "www.jmatrix.org").usingJobData("rank", "求别提~~~").build();

           // 触发器  

           //CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);// 触发器名,触发器组  

           CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity(jobName, JOB_GROUP_NAME).withSchedule(CronScheduleBuilder.cronSchedule((time))).build();

          sched.scheduleJob(jobDetail, (Trigger) trigger);  

           // 启动  

           if (!sched.isShutdown()) {  

               sched.start();  

           }  

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }  

 

   /** 

    * @Description: 添加一个定时任务 

    *  

    * @param jobName 

    *            任务名 

    * @param jobGroupName 

    *            任务组名 

    * @param triggerName 

    *            触发器名 

    * @param triggerGroupName 

    *            触发器组名 

    * @param jobClass 

    *            任务 

    * @param time 

    *            时间设置,参考quartz说明文档 

    *  

    */  

   public static void addJob(String jobName, String jobGroupName,  

           String triggerName, String triggerGroupName, Class cls,String time) {  

       try {  

           Scheduler sched = gSchedulerFactory.getScheduler();  

           JobDetail jobDetail = JobBuilder.newJob(cls).withIdentity(

           jobName, jobGroupName).usingJobData("domain",

           "www.jmatrix.org").usingJobData("rank", "求别提~~~").build();

           

           // 触发器  

           CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity(jobName, jobGroupName).withSchedule(CronScheduleBuilder.cronSchedule((time))).build();

           sched.scheduleJob(jobDetail, trigger);

           // 启动  

           if (!sched.isShutdown()) {  

               sched.start();  

           }  

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }  

 

   /** 

    * @Description: 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名) 

    *  

    * @param jobName 

    * @param time 

    *  

    */  

   public static void modifyJobTime(String jobName, String time) {  

       try {  

           Scheduler sched = gSchedulerFactory.getScheduler();  

           CronTrigger trigger = (CronTrigger) sched.getTrigger(new TriggerKey(jobName, JOB_GROUP_NAME));  

           

           if (trigger == null) {  

               return;  

           }  

          String oldTime = trigger.getCronExpression();  

           if (!oldTime.equalsIgnoreCase(time)) {  

               JobDetail jobDetail = sched.getJobDetail(new JobKey(jobName));

               Class objJobClass = jobDetail.getJobClass();  

               sched.resumeJob(new JobKey(jobName));

               addJob(jobName, objJobClass, time);  

           }  

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }  

 

   /** 

    * @Description: 修改一个任务的触发时间 

    *  

    * @param triggerName 

    * @param triggerGroupName 

    * @param time 

    *  

    * @Title: QuartzManager.java 

    * @Copyright: Copyright (c) 2014 

    *  

    * @author Comsys-LZP 

    * @date 2014-6-26 下午03:49:37 

    * @version V2.0 

    */  

  /* public static void modifyJobTime(String triggerName,  

           String triggerGroupName, String time) {  

       try {  

           Scheduler sched = gSchedulerFactory.getScheduler();  

           CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerName,triggerGroupName);  

           if (trigger == null) {  

               return;  

           }  

           String oldTime = trigger.getCronExpression();  

           if (!oldTime.equalsIgnoreCase(time)) {  

               CronTrigger ct = (CronTrigger) trigger;  

               // 修改时间  

               ct.setCronExpression(time);  

               // 重启触发器  

               sched.resumeTrigger(triggerName, triggerGroupName);  

           }  

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }  */

 

   /** 

    * @Description: 移除一个任务(使用默认的任务组名,触发器名,触发器组名) 

    *  

    * @param jobName 

    *  

    * @Title: QuartzManager.java 

    * @Copyright: Copyright (c) 2014 

    *  

    * @author Comsys-LZP 

    * @date 2014-6-26 下午03:49:51 

    * @version V2.0 

    */  

   public static void removeJob(String jobName) {  

       try {  

           Scheduler sched = gSchedulerFactory.getScheduler();  

           sched.pauseTrigger(new TriggerKey(jobName, JOB_GROUP_NAME));// 停止触发器  

           sched.resumeTrigger(new TriggerKey(jobName, JOB_GROUP_NAME));// 移除触发器

           sched.resumeJob(new JobKey(jobName));

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }

   

  

 

   /** 

    * @Description: 移除一个任务 

    *  

    * @param jobName 

    * @param jobGroupName 

    * @param triggerName 

    * @param triggerGroupName 

    *  

    */  

   public static void removeJob(String jobName, String jobGroupName,  

           String triggerName, String triggerGroupName) {  

       try {  

        Scheduler sched = gSchedulerFactory.getScheduler();  

           sched.pauseTrigger(new TriggerKey(jobName, jobGroupName));// 暂停触发器  

           sched.deleteJob(new JobKey(jobName,jobGroupName));//停止任务

           

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }

   /**

    * 暂停任务

    * @param jobName

    * @param jobGroupName

    * @param triggerName

    * @param triggerGroupName

    */

   public static void pauseJob(String jobName, String jobGroupName,  

           String triggerName, String triggerGroupName) {  

       try {  

        Scheduler sched = gSchedulerFactory.getScheduler();  

           sched.pauseTrigger(new TriggerKey(jobName, jobGroupName));// 停止触发器  

           

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   } 

   

   /**

    * 重新启动任务

    * @param jobName

    * @param jobGroupName

    * @param triggerName

    * @param triggerGroupName

    */

   public static void resumeJob(String jobName, String jobGroupName,  

           String triggerName, String triggerGroupName) {  

       try {  

        Scheduler sched = gSchedulerFactory.getScheduler();  

           sched.resumeTrigger(new TriggerKey(jobName, jobGroupName)); //重新启动任务

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }  

 

   /** 

    * @Description:启动所有定时任务 

    *  

    *  

    */  

   public static void startJobs() {  

       try {  

           Scheduler sched = gSchedulerFactory.getScheduler();  

           sched.start();  

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }  

 

   /** 

    * @Description:关闭所有定时任务 

    *  

    *  

    */  

   public static void shutdownJobs() {  

       try {  

           Scheduler sched = gSchedulerFactory.getScheduler();  

           if (!sched.isShutdown()) {  

               sched.shutdown();  

           }  

       } catch (Exception e) {  

           throw new RuntimeException(e);  

       }  

   }  

}

此处省略后台业务逻辑代码。。。。。。。

© 著作权归作者所有

共有 人打赏支持
奋斗的小菜一碟
粉丝 11
博文 34
码字总数 8248
作品 0
广州
程序员
Spring Quartz 任务静态配置和动态添加

Quartz任务可以静态配置到配置文件中,也可以动态添加. 1.Quartz任务 静态配置 其中 <property name="concurrent" value="false"/>,是设置job不能并发执行。 2.Quartz任务 动态添加 定时器动...

满小茂 ⋅ 2016/12/20 ⋅ 0

Quartz任务监控管理 (1)

Quartz任务监控管理,类似Windows任务管理器,可以获得运行时的实时监控,查看任务运行状态,动态增加任务,暂停、恢复、移除任务等。对于动态增加任务,可以参加我的前一篇文章《Quartz如何...

光石头 ⋅ 2011/06/12 ⋅ 1

Spring 3整合Quartz 2实现定时任务 动态暂停 恢复 修改和删除任务

前面我们已经完成了spring 3和quartz 2的整合以及动态添加定时任务,我们接着来完善它,使之能支持更多的操作,例如暂停、恢复、修改等。 在动态添加定时任务中其实已经涉及到了其中的一些代...

Zero零_度 ⋅ 2016/08/18 ⋅ 0

liuht777/uncode-scheduler

uncode-schedule 基于Spring Task + Zookeeper的分布式任务调度组件,非常小巧,使用简单,只需要引入jar包。不需要单独部署服务端。确保所有任务在集群中不重复,不遗漏的执行。支持动态添加...

liuht777 ⋅ 2017/10/26 ⋅ 0

quartz分布式集群部署并且可视化配置job定时任务

项目使用quartz框架完成了定时任务集群部署调度,并且对quartz进一步封装完成在web界面可动态配置定时任务。定时任务如果集群部署,到达时间点时,同一个任务只能在其中一台机器上执行。对于...

hxt168 ⋅ 2016/07/04 ⋅ 1

Spring与Quartz实现定期任务

日志说明: 1、不对Spring的基础环境配置做详细说明; 2、只是记录一下暂时自己从网上及参考手册上查找到的经测试有用的资料 3、记录一下,方便以后自己或需要的朋友使用,后续有新的有用资料...

C-Kellen ⋅ 2015/01/02 ⋅ 0

Spring与Quartz实现定期任务

日志说明: 1、不对Spring的基础环境配置做详细说明; 2、只是记录一下暂时自己从网上及参考手册上查找到的经测试有用的资料 3、记录一下,方便以后自己或需要的朋友使用,后续有新的有用资料...

木子丰 ⋅ 2014/03/28 ⋅ 0

快速开发平台 - JeeFast

平台简介 JeeFast快速开发平台是基于多个优秀的开源项目,将各个亮点设计融于一体的快速开发平台。平台内置 用户管理、部门管理、角色管理、菜单管理、参数管理、云存储服务、日志管理、数据...

theodo ⋅ 2017/11/02 ⋅ 0

项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度

2014-05-18 12:51 by Jeff Li 前言   系列文章:[传送门]   项目需求:      http://www.cnblogs.com/Alandre/p/3733249.html      上一博客写的是基本调度,后来这只能用于,...

泥沙砖瓦浆木匠 ⋅ 2014/05/18 ⋅ 0

Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)

什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。 这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许...

随影求是 ⋅ 2012/05/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 数据库设计总结

规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节...

OSC_cnhwTY ⋅ 41分钟前 ⋅ 0

多线程(四)

线程池和Exector框架 什么是线程池? 降低资源的消耗 提高响应速度,任务:T1创建线程时间,T2任务执行时间,T3线程销毁时间,线程池没有或者减少T1和T3 提高线程的可管理性。 线程池要做些什...

这很耳东先生 ⋅ 49分钟前 ⋅ 0

使用SpringMVC的@Validated注解验证

1、SpringMVC验证@Validated的使用 第一步:编写国际化消息资源文件 编写国际化消息资源ValidatedMessage.properties文件主要是用来显示错误的消息定制 [java] view plain copy edit.userna...

瑟青豆 ⋅ 今天 ⋅ 0

19.压缩工具gzip bzip2 xz

6月22日任务 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 6.1 压缩打包介绍: linux中常见的一些压缩文件 .zip .gz .bz2 .xz .tar .gz .tar .bz2 .tar.xz 建立一些文...

王鑫linux ⋅ 今天 ⋅ 0

6. Shell 函数 和 定向输出

Shell 常用函数 简洁:目前没怎么在Shell 脚本中使用过函数,哈哈,不过,以后可能会用。就像java8的函数式编程,以后获取会用吧,行吧,那咱们简单的看一下具体的使用 Shell函数格式 linux ...

AHUSKY ⋅ 今天 ⋅ 0

单片机软件定时器

之前写了一个软件定时器,发现不够优化,和友好,现在重写了 soft_timer.h #ifndef _SOFT_TIMER_H_#define _SOFT_TIMER_H_#include "sys.h"typedef void (*timer_callback_function)(vo...

猎人嘻嘻哈哈的 ⋅ 今天 ⋅ 0

好的资料搜说引擎

鸠摩搜书 简介:鸠摩搜书是一个电子书搜索引擎。它汇集了多个网盘和电子书平台的资源,真所谓大而全。而且它还支持筛选txt,pdf,mobi,epub、azw3格式文件。还显示来自不同网站的资源。对了,...

乔三爷 ⋅ 今天 ⋅ 0

Debian下安装PostgreSQL的表分区插件pg_pathman

先安装基础的编译环境 apt-get install build-essential libssl1.0-dev libkrb5-dev 将pg的bin目录加入环境变量,主要是要使用 pg_config export PATH=$PATH:/usr/lib/postgresql/10/bin 进......

玛雅牛 ⋅ 今天 ⋅ 0

inno安装

#define MyAppName "HoldChipEngin" #define MyAppVersion "1.0" #define MyAppPublisher "Hold Chip, Inc." #define MyAppURL "http://www.holdchip.com/" #define MyAppExeName "HoldChipE......

backtrackx ⋅ 今天 ⋅ 0

Linux(CentOS)下配置php运行环境及nginx解析php

【part1:搭建php环境】 1.选在自己需要安装的安装包版本,wget命令下载到服务器响应目录 http://php.net/releases/ 2.解压安装包 tar zxf php-x.x.x 3.cd到解压目录执行如下操作 cd ../php-...

硅谷课堂 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部