四、实现动态定时任务
什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。
这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件,但总需要重新启动web服务啊,研究了下Quartz在Spring中的动态定时,发现
引用
<bean
id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"
>
<property name="jobDetail"
ref="schedulerJobDetail"/>
<property
name="cronExpression">
<value>0/10 * * *
* ?</value>
</property>
中cronExpression是关键,如果可以动态设置cronExpression的值,就可以顺利解决问题了。这样我们就不能直接使用org.springframework.scheduling.quartz.CronTriggerBean,需要自己实现一个动态调度服务类,在其中构建CronTrigger或SimpleTrigger,动态配置时间。
动态调度服务接口:
-
package com.sundoctor.quartz.service;
-
-
import java.util.Date;
-
-
import org.quartz.CronExpression;
-
-
public interface SchedulerService {
-
/**
-
* 根据 Quartz Cron Expression 调试任务
-
* @param cronExpression Quartz Cron 表达式,如 "0/10 * * ? * * *"等
-
*/
-
void schedule(String cronExpression);
-
-
/**
-
* 根据 Quartz Cron Expression 调试任务
-
* @param name Quartz CronTrigger名称
-
* @param cronExpression Quartz Cron 表达式,如 "0/10 * * ? * * *"等
-
*/
-
void schedule(String name,String cronExpression);
-
-
/**
-
* 根据 Quartz Cron Expression 调试任务
-
* @param cronExpression Quartz CronExpression
-
*/
-
void schedule(CronExpression cronExpression);
-
-
/**
-
* 根据 Quartz Cron Expression 调试任务
-
* @param name Quartz CronTrigger名称
-
* @param cronExpression Quartz CronExpression
-
*/
-
void schedule(String name,CronExpression cronExpression);
-
-
/**
-
* 在startTime时执行调试一次
-
* @param startTime 调度开始时间
-
*/
-
void schedule(Date startTime);
-
-
/**
-
* 在startTime时执行调试一次
-
* @param name Quartz SimpleTrigger 名称
-
* @param startTime 调度开始时间
-
*/
-
void schedule(String name,Date startTime);
-
-
/**
-
* 在startTime时执行调试,endTime结束执行调度
-
* @param startTime 调度开始时间
-
* @param endTime 调度结束时间
-
*/
-
void schedule(Date startTime,Date endTime);
-
-
/**
-
* 在startTime时执行调试,endTime结束执行调度
-
* @param name Quartz SimpleTrigger 名称
-
* @param startTime 调度开始时间
-
* @param endTime 调度结束时间
-
*/
-
void schedule(String name,Date startTime,Date endTime);
-
-
/**
-
* 在startTime时执行调试,endTime结束执行调度,重复执行repeatCount次
-
* @param startTime 调度开始时间
-
* @param endTime 调度结束时间
-
* @param repeatCount 重复执行次数
-
*/
-
void schedule(Date startTime,Date endTime,int repeatCount);
-
-
/**
-
* 在startTime时执行调试,endTime结束执行调度,重复执行repeatCount次
-
* @param name Quartz SimpleTrigger 名称
-
* @param startTime 调度开始时间
-
* @param endTime 调度结束时间
-
* @param repeatCount 重复执行次数
-
*/
-
void schedule(String name,Date startTime,Date endTime,int repeatCount);
-
-
/**
-
* 在startTime时执行调试,endTime结束执行调度,重复执行repeatCount次,每隔repeatInterval秒执行一次
-
* @param startTime 调度开始时间
-
* @param endTime 调度结束时间
-
* @param repeatCount 重复执行次数
-
* @param repeatInterval 执行时间隔间
-
*/
-
void schedule(Date startTime,Date endTime,int repeatCount,long repeatInterval) ;
-
-
/**
-
* 在startTime时执行调试,endTime结束执行调度,重复执行repeatCount次,每隔repeatInterval秒执行一次
-
* @param name Quartz SimpleTrigger 名称
-
* @param startTime 调度开始时间
-
* @param endTime 调度结束时间
-
* @param repeatCount 重复执行次数
-
* @param repeatInterval 执行时间隔间
-
*/
-
void schedule(String name,Date startTime,Date endTime,int repeatCount,long repeatInterval);
- }
分享到:
相关推荐
Spring Quartz如何动态配置时间
本人花费多日时间,亲测有效。所需文件代码完整,只需导入常用开发IDE和mysql数据库即可正常使用。
在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合...
Spring Quartz动态配置时间.rar
NULL 博文链接:https://sundoctor.iteye.com/blog/399980
Quartz + spring简单配置多个任务调度 spring配置文件 简单配置
spring框架配置的时间调度插件,提供jar包 及 配置实例
Quartz 是一个强大的企业级 Schedule 工具,也是目前最好的开源 Schedule 工具。实例中quartz在spring中的应用及quartz详细时间配置。
Spring自带了多线程设置:quartz,在quartz的设置中,时间字段CronExpression的设置比较纠结,一个Cron表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,文档详细讲解了这个...
Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查,部署到tomcat即可看到定时任务执行效果。本人亲测,可用!
虽然可以通过属性文件(在属性文件中可以指定 JDBC 事务的数据源、全局作业和/或触发器侦听器、插件、线程池,以及更多)配置 Quartz,但它根本没有与应用程序服务器的上下文或引用集成在一起。结果就是作业不能访问...
下载导入就可以用,执行test类的main方法加载spring applicationContext.xml配置文件,启动Quartz定时器.修改spring配置文件的配置时间.详细看注释
传统Spring+Quartz实现的定时器一般都是通过配置文件中配置的,这就意味着如果我们修改了定时任务的时间,就得重新启动一下Tomcat,而且每次新建一个任务就得在spring中添加相关的配置信息,非常麻烦。基于上面的...
Quartz学习文档 Spring + Quartz配置详细实例 jar包 Quartz时间格式设置
NULL 博文链接:https://daoshud1.iteye.com/blog/1955099
NULL 博文链接:https://hzywy.iteye.com/blog/1647076
spring不能正常加载,由于第一次使用Quartz,我就是当时忽略了这一点,浪费了很多时间来调配置,其实配置一点没有错误。 3. 你会问为什么用spring后就不用 quartz.properties quartz-jobsxml这两个文件了么? ...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和触发器的监听...
quartz1.6.5 整合 Hibernate、Spring,本例支持同时运行多个不同的任务,每个任务动态调用的方法和时间都不一样; 附件中有支持各种数据库的脚本;本例支持Oracle10g数据库脚本;开发测试使用的IDE工具MyEclipse6.5;...
quartz1.6.5 整合 Hibernate、Spring,本例支持同时运行多个不同的任务,每个任务动态调用的方法和时间都不一样; 附件中有支持各种数据库的脚本;本例支持Oracle10g数据库脚本;开发测试使用的IDE工具MyEclipse6.5;...