本人有一个应用,需要 每15分钟 执行一次入库操作(比较费时),使用spring 架构。现在想使用quartz来定时此操作。
我的问题是,如果15分钟后,我的定时任务还没有执行完,该怎么办呢。
希望大家给点建议。非常感谢!
问题补充:beneo 写道
引用
如果15分钟后,我的定时任务还没有执行完,该怎么办呢。
spring里面有1个选项,表示是否并行
<property name="concurrent" value="false" />
如果是false,那么任务之间不能并行。
意思是:
1. 如果你是CronTriggerBean,比如每刻钟执行一次——你0分执行第一次,结果20分才执行完,那么它第30分才执行第二次。
2. 如果你SimpleTriggerBean,比如说每隔15分钟执行一次——你0分执行了第一次,如果20分钟执行完,那么它会立刻执行第二次
如果是true的话,就反过来。
你可以参考
标准文档
beneo 写道
引用
如果15分钟后,我的定时任务还没有执行完,该怎么办呢。
spring里面有1个选项,表示是否并行
<property name="concurrent" value="false" />
如果是false,那么任务之间不能并行。
意思是:
1. 如果你是CronTriggerBean,比如每刻钟执行一次——你0分执行第一次,结果20分才执行完,那么它第30分才执行第二次。
2. 如果你SimpleTriggerBean,比如说每隔15分钟执行一次——你0分执行了第一次,如果20分钟执行完,那么它会立刻执行第二次
如果是true的话,就反过来。
你可以参考
标准文档
那个配置,是不是在:一个任务配置在两个TriggerBean里才起作用的啊。
也就是:有两个TriggerBean,他们配置了同一个任务,这样可以用concurrent来控制是否允许他们并发。
问题补充:beneo 写道
引用
有两个TriggerBean,他们配置了同一个任务,这样可以用concurrent来控制是否允许他们并发。
你这句话说对了一半,
引用
two triggers for the same JobDetail
,意思两个TriggerBean是这样,你一个TriggerBean,被trigger了2次,也是这样
嗯,明天测试一下看,谢谢!如果concurrent设置为false可以解决问题的话,采纳为答案了。
问题补充:beneo 写道
引用
By default, Quartz Jobs are stateless, resulting in the possibility of jobs interfering with each other. If you specify two triggers for the same JobDetail, it might be possible that before the first job has finished, the second one will start. If JobDetail classes implement the Stateful interface, this won't happen. The second job will not start before the first one has finished. To make jobs resulting from the MethodInvokingJobDetailFactoryBean non-concurrent, set the concurrent flag to false.
注意红色的部分。后面的job,你知道trigger一次就产生一个job,所以跟你的bean有多少个是无关的。
好的,Trigger一次就产生一个job的话,那么concurrent设为false应该就可以了。明天上班的时候测试了。谢谢!
相关推荐
本文将详细解析“spring quartz定时任务demo”这个项目,它提供了实现Java定时任务的实例,便于快速理解和应用。 首先,Quartz是一个开源的作业调度框架,支持复杂的调度策略,可以创建、调度和执行重复或一次性...
Spring Quartz定时任务是Java开发中常见的一种任务调度框架,它结合了Spring的优秀特性与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务的管理。在本压缩包中,包含的是`log4j-1.2.14.jar`这个日志处理...
Spring Quartz定时任务所需要的6个jar包,找到6个可是不容易哦。commons-collections.jar.zip+commons-logging.jar+jta.jar+log4j-1.2.14.jar.zip+quartz-all-1.6.0.jar+spring-2.0.6.jar
Spring Quartz 是一个强大的开源任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。在Spring框架中集成Quartz,可以充分利用Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming...
在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...
Spring + quartz 定时任务修改定时时间不重启服务
Spring框架作为Java领域广泛使用的轻量级框架,提供了与第三方库Quartz的整合,使得开发者能够轻松地在Spring应用中实现复杂的定时任务调度。Quartz是一款开源的作业调度框架,支持丰富的调度策略,可以满足各种定时...
Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用中定义和执行定时任务。本实例将探讨如何在Spring框架中集成Quartz,创建并运行一个简单的定时任务。以下是你需要知道的关键知识点: 1. **Quartz...
总结,通过以上步骤,我们就成功地在Spring 3中配置了Quartz定时任务,实现了每10秒执行一次的任务。在实际应用中,你可以根据需求定义更复杂的作业和触发器,以及使用Quartz的其他高级特性,如集群支持、持久化作业...
Spring Quartz 动态暂停、恢复、修改定时任务的一个demo,使用maven构建,框架采用spring springmvc jpa,数据库mysql,含数据库脚本,运行可用,页面访问地址http://localhost:8080/quartz_demo/quartz/list
在Spring中整合Quartz,我们可以利用Spring的管理能力,如bean的生命周期管理和事务管理,来更方便地创建和管理定时任务。 **Spring+Quartz动态定时任务创建** 将Spring与Quartz结合,我们可以方便地在运行时动态...
Spring框架提供了一系列工具来支持定时任务的实现,其中包括Spring自带的`spring-task`模块和第三方的Quartz库。下面我们将详细探讨这两种方式以及如何通过注解和非注解的方式进行配置。 首先,`spring-task`是...
总之,Spring Quartz定时调度jar包为开发者提供了强大的定时任务管理能力,无论是简单的一次性任务还是复杂的周期性任务,都可以轻松处理。通过Spring的管理,任务的创建和维护变得更加灵活和易于测试。在实际开发中...
在这两种方式中,Spring框架提供了自己的定时任务工具Spring Task,以及与专业定时任务框架Quartz集成的能力。 首先,对于Java自带的定时任务实现,我们可以使用java.util.Timer和java.util.TimerTask类。Timer类...
综上所述,Spring Quartz定时作业项目提供了一个完整的示例,涵盖了Spring集成Quartz的基本操作,帮助开发者快速理解和应用定时任务。通过学习这个项目,你可以深入理解如何在Spring环境中使用Quartz,从而提高应用...
在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...
总结起来,Spring中的Quartz定时任务配置涉及到创建Job Bean、定义Job Detail Bean来指定执行方法,以及设置Cron Trigger Bean来控制执行时机。同时,还需要配置Quartz的属性文件来满足特定的应用需求。正确理解和...