四、实现动态定时任务
什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。
这样总不能修改配置文件每定制个定时任务就增加一个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 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...
在这个“quartz_springbatch_dynamic”项目中,我们将看到如何将这两个强大的工具结合起来,以实现动态集群环境中的定时任务执行,并使用MySQL作为数据存储。 Quartz是一个开源的作业调度框架,允许开发者创建、...
本篇文章将详细探讨如何在Spring中动态配置Quartz,以及相关的核心知识点。 首先,我们需要在项目中引入Quartz和Spring的依赖。在Maven的pom.xml文件中添加如下依赖: ```xml <groupId>org.quartz-scheduler ...
标题与描述均聚焦于“Quartz在Spring中动态设置cronExpression”的主题,这涉及到了两个主要的开源项目:Quartz,一个强大的作业调度框架;以及Spring,一个广泛使用的Java平台框架,用于构建企业级应用程序。Quartz...
通过上述配置,不仅可以在 Spring 应用中实现定时任务的管理,还能根据实际需求动态调整任务的执行时间和状态。这种方式特别适用于需要频繁变更调度规则的应用场景,如 Web 应用中的报表生成、数据同步等任务。使用...
在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java 定时器的功能。 Quartz 介绍 Quartz 是一个开源的作业调度器,可以让开发者轻松地实现任务的定时执行。它提供了强大的调度功能,可以满足复杂...
- 在`web.xml`中,通过`contextConfigLocation`参数指定了Spring配置文件的位置,这样Spring会自动加载`applicationContext-quartz.xml`。 3. **业务逻辑**: - `SysScheduleServiceImpl`类实现了`...
在Spring配置文件(如`applicationContext.xml`)中,定义`SchedulerFactoryBean`来实例化和配置Quartz Scheduler: ```xml <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz....
在Spring配置文件(如`applicationContext.xml`)中配置Quartz的SchedulerFactoryBean。 ```xml <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ...
这个压缩包“Spring Quartz动态配置时间.rar”包含的PDF文档很可能是关于如何在Spring框架中使用Quartz进行动态配置时间的详细教程。下面将详细介绍Spring集成Quartz进行动态任务调度的相关知识点。 1. **Quartz...
在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合...
最后,启动Spring容器,Quartz会自动加载数据库中的Job和Trigger配置,按照设定的时间执行相应的任务。 通过这种方式,我们可以构建一个高度可扩展和可配置的定时任务系统,只需在数据库中修改Job和Trigger的配置,...
3. **整合过程**:整合 Spring 2 和 Quartz 需要在 Spring 配置文件中声明 Job 和 Trigger 的 Bean,并指定它们的关联。Spring 可以通过其自身的 JobFactory 来创建 Job 实例,使得 Job 可以利用 Spring 的 DI 功能...
接下来是在Spring配置文件中对Quartz进行配置。以下是配置示例: ```xml <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <!-- 要调用的工作类 --> ...
在Spring配置文件中,可以使用`SchedulerFactoryBean`来初始化并管理Scheduler。这个bean将负责启动、停止Scheduler,以及处理其他相关的生命周期事件。 在非配置动态定时任务中,我们不再在XML或Java配置中硬编码...
2. **XML配置**: 在Spring的配置文件中,你可以声明Job和Trigger,然后通过SchedulerFactoryBean来创建和配置Scheduler。这种方式简化了代码,使得任务配置更加灵活。 3. **编程式API**: 除了XML配置,还可以使用...
本项目“Springboot2-Quartz 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个示例,它展示了如何在后台管理系统中动态地创建、更新和删除定时任务,以及监控这些任务的状态,为...
2. 配置Scheduler:在Spring的配置文件中,使用`SchedulerFactoryBean`来初始化和配置Quartz Scheduler。可以设置如数据库存储、线程池大小等参数。 3. 创建Job类:定义一个实现了`org.quartz.Job`接口的类,这是...