文档章节

quartz动态生成任务

奋斗的小菜一碟
 奋斗的小菜一碟
发布于 2015/12/29 15:25
字数 1045
阅读 114
收藏 7
点赞 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
博文 35
码字总数 8248
作品 0
广州
程序员
Spring Quartz 任务静态配置和动态添加

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

满小茂
2016/12/20
211
0
Quartz任务监控管理 (1)

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

光石头
2011/06/12
0
1
Spring 3整合Quartz 2实现定时任务 动态暂停 恢复 修改和删除任务

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

Zero零_度
2016/08/18
91
0
liuht777/uncode-scheduler

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

liuht777
2017/10/26
0
0
quartz分布式集群部署并且可视化配置job定时任务

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

hxt168
2016/07/04
560
1
Spring与Quartz实现定期任务

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

C-Kellen
2015/01/02
0
0
Spring与Quartz实现定期任务

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

木子丰
2014/03/28
0
0
快速开发平台 - JeeFast

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

theodo
2017/11/02
1K
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
0
jfinal定时调度任务插件QuartzPlugin

pom.xml依赖quartz quartz_config.properties(quartz配置) quartz_job.properties(任务配置,默认的调度任务可以在这里添加) FormaterCronExpression.java(日期转cron定时表达式类) JobBean...

peter_qyq
2017/07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Elasitcsearch High Level Rest Client学习笔记(三)批量api

Bulk Request BulkRequest可以在一起从请求执行批量添加、更新和删除,至少需要添加一个操作 BulkRequest request = new BulkRequest(); //创建BulkRequestrequest.add(new IndexRequest("...

木子SMZ
3分钟前
0
0
mybatis-dynamic sql

OGNL expressions if 判断是否存在值 <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{tit......

writeademo
10分钟前
0
0
社交系统ThinkSNS+ V1.8.3更新播报

     研发发布版本号:1.8.3   本次版本于2018年7月16日发布   本次发布类型:新增功能、细节调整与优化   社交系统ThinkSNSPlus更新体验:请于官网下载/安装最新版或联系QQ35159...

ThinkSNS账号
14分钟前
0
0
教育思考:选择编程是一场父母和孩子的和解[图]

教育思考:选择编程是一场父母和孩子的和解[图]: 之前有个很热的段子是这样讲的:深夜十点的时候,某小区一女子大声喊叫“什么关系?啊?!到底什么关系?你说!”最后发现原来是一位妈妈陪...

原创小博客
14分钟前
0
0
X64汇编之指令格式解析

最近由于项目组内要做特征码搜索的东西,便于去Hook一些未导出函数,你懂得...于是就闲着学习了一下x86/x64的汇编指令格式。x86的汇编指令格式请参照http://bbs.pediy.com/showthread.php?t...

simpower
17分钟前
0
0
rust 语法概要(只适合不熟悉时快速查阅使用,不适合理解其精髓。未完待续)

注意:本内容只适合快查,不适合理解精髓。精髓请研读 https://kaisery.github.io/trpl-zh-cn/foreword.html 基本数据类型 i8,i16,i32,i64,i128 u8,u16,u32,u64,u128 f32,f64 char bool:true...

捍卫机密
20分钟前
0
0
JS中严格模式和非严格模式

1,使用 严格模式的使用很简单,只有在代码首部加入字符串 "use strict"。必须在首部即首部指其前面没有任何有效js代码除注释,否则无效 2.注意事项 (1)不使用var声明变量严格模式中将不通...

AndyZhouX
21分钟前
0
0
Nginx配置error_page 404 500等自定义的错误页面

Nginx 做web server时, 开发中发现有时候的网站代码有错误,我们需要跳转到一个指定内容的错误页面: 1. 在nginx.conf配置文件上加上一句: fastcgi_intercept_errors on; 2. 服务中加上: er...

MichaelShu
23分钟前
0
0
微服务架构下的监控系统设计(一)——指标数据的采集展示

前言 微服务是一种架构风格,一个大型复杂软件应用通常由多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。...

UCloudTech
28分钟前
0
0
极客时间《趣谈网络协议》之开篇词学习笔记

出于个人兴趣,本人在极客时间购买了网易研究院云计算技术部的首席架构师刘超老师关于计算机网络的专栏之《趣谈网络协议》,由于知识版权原因,不能直接分享刘超老师的原文,所以,我会在每次...

aibinxiao
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部