文档章节

quartz动态生成任务

奋斗的小菜一碟
 奋斗的小菜一碟
发布于 2015/12/29 15:25
字数 1045
阅读 114
收藏 7

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
springboot整合Quartz实现动态配置定时任务

        前言   在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能。   一、新建一...

Java高级进阶架构师
08/05
0
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

没有更多内容

加载失败,请刷新页面

加载更多

Spring IOC实现原理

1、BeanDefinition 对依赖翻转模式中管理对象依赖关系的数据抽象 实现依赖翻转功能的核心数据结构 依赖翻转功能都是围绕对BeanDefinition 处理完成的 有了这些BeanDefinition 基础数据结构,...

职业搬砖20年
11分钟前
0
0
Python判断变量的数据类型的两种方法

1、isinstance(变量名,类型) def varargsql(self, sql, *args): if isinstance(args, tuple): self.cursor.execute(sql, args) self.conn.commit() 2、通过与其他已......

fang_faye
12分钟前
0
0
xml 转义特殊字符

XML中共有5个特殊的字符,分别是:&<>“’。如果配置文件中的注入值包括这些特殊字符,就需要进行特别处理。有两种解决方法:其一,采用本例中的特殊标签,将包含特殊字符的字符串封装起来;...

inidcard
13分钟前
0
0
Mysql中哪些sql 不会走索引

1. 索引列参与了计算 SELECT `sname` FROM `stu` WHERE `age`+10=30; 2. 索引使用了函数运算 SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) <1990; 3. like SELECT * FROM `houdunwang` W......

ChyiHuang
22分钟前
1
0
nginx 504 Gateway Time-out

打开nginx.config: 参数介绍: #设定http服务器http{include mime.types; #文件扩展名与文件类型映射表default_type application/octet-stream; #默认文件类型#charset utf-8; #默...

lyle_luo
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部