spring quartz强制使用RAMJobStore
作者:sunshy 日期:2009-08-13
在 spring里用quartz时,因为quartz调用的是一个业务层的操作,配置文件里有个datesource,这样以来spring默认会给 quartz装载datesource,即quartz被设成了JDBCJobStore模式,这样就出问题了,一方面我需要在数据库中增加十来张表,另一方面当我们的任务不能被序列化的时候,存储数据库的时候会报错!
你说简简单单的RAMJobStore多好,当然如果你的调动任务比较复杂的时候用JDBCJobStore来持久维持状态也有可取之处,这里不讨论RAMJobStore和JDBCJobStore的区别,如感兴趣可看这篇文章。这里我要讨论的就是怎么干掉JDBCJobStore模式。
首先一个尝试,在spring配置中的SchedulerFactoryBean设置:
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">1</prop>
<!--<prop key="org.quartz.threadPool.threadPriority">4</prop>-->
<prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
</props>
</property>
测试好像没起作用,经查,发现时spring自动装载在作祟。这里有一篇介绍的文章。我是在spring配置最外层加了default-autowire="byName"属性,当然这个是有用的,因为我类中都用了@autowire自动装载,这个地方不能改。所以只能在SchedulerFactoryBean这个bean里改,这样既不影响全局,也实现了quartz强制使用 RAMJobStore的需求:
<bean id="cmsScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">
<property name="triggers">
<list>
<ref bean="simplePublishJobTrigger"/>
<ref bean="cronPublishJobTrigger"/>
</list>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">1</prop>
<!--<prop key="org.quartz.threadPool.threadPriority">4</prop>-->
<prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
</props>
</property>
</bean>
分享到:
相关推荐
Spring对Quartz进行了集成,使其更易于在Spring应用程序中使用。Spring提供了`FactoryBean`类,如`SchedulerFactoryBean`,用于创建和管理Quartz的`Scheduler`实例。这使得我们可以利用Spring的依赖注入(DI)和管理...
2. **Spring与Quartz集成**:介绍如何在Spring应用中配置Quartz,包括使用`@EnableScheduling`注解开启调度,以及如何定义`@Scheduled`注解的任务。 3. **Cron表达式**:详细讲解Cron表达式的组成部分和语法,以及...
Spring Quartz是Spring框架与Quartz任务调度库的集成,它为开发者提供了在Spring应用中进行任务调度的强大功能。Quartz是一个开源的作业调度框架,能够处理执行周期性任务的需求。在Java环境中,Spring Quartz使得...
Spring整合Quartz是一款常见的任务调度解决方案,它允许开发者在应用程序中安排定时任务的执行。Quartz是一个开源的作业调度框架,而Spring通过提供一个简洁的API使得与Quartz的集成变得简单。以下是对Spring整合...
总的来说,这个压缩包提供了不同版本的 Spring 和 Quartz jar 文件,对于需要在 Spring 应用中使用 Quartz 定时任务的开发者来说,是一个宝贵的资源。正确地集成和配置这些库可以有效地帮助实现高效、可靠的后台任务...
在Java开发中,Spring框架与Quartz库的结合使用能够帮助开发者实现强大的定时任务功能。本文将详细解析“spring quartz定时任务demo”这个项目,它提供了实现Java定时任务的实例,便于快速理解和应用。 首先,...
Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...
通过以上介绍,我们可以看到Spring Quartz 1.8.x为Java开发者提供了一个强大且灵活的任务调度解决方案,使得在Spring应用中实现定时任务变得简单易行。无论是简单的定时任务还是复杂的调度需求,都能在Spring Quartz...
综上所述,解决Spring Quartz在负载均衡环境下的重复执行问题,需要综合运用Quartz的集群特性、数据库Job Store、公平调度以及应用层面的设计策略。通过这些方法,可以确保在多服务器环境中,定时任务的执行有序且...
在使用Spring Quartz进行任务调度时,开发者需要创建Job类,实现`org.springframework.scheduling.quartz.JobDetailBean`,并设置相关的属性,如Job的名字和Group。同时,需要创建Trigger类,如`org.springframework...
以下是如何在Spring应用中配置和使用Spring Quartz的步骤: 1. **添加依赖**:在项目中引入Quartz和Spring的相应依赖库。 2. **配置Spring**:在Spring配置文件中声明`SchedulerFactoryBean`,并配置相关的Quartz...
Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...
这个项目的核心在于如何使用Spring管理Quartz定时任务的配置和执行。让我们深入了解一下相关知识点: 1. **Quartz简介**:Quartz是开源的作业调度框架,它允许应用程序定义和调度任务,以便在特定的时间点或按照...
通过这个示例项目,开发者可以学习如何在实际应用中使用Spring和Quartz进行任务调度,理解如何定义、配置和管理定时任务,以及如何在Spring环境中优雅地集成Quartz。这不仅有助于提高代码的可维护性,还能使定时任务...
下面将详细介绍如何进行Spring与Quartz的整合,以及使用JDBC存储的相关步骤。 1. **Spring与Quartz的整合** 首先,我们需要在项目中引入Spring和Quartz的相关依赖。在Maven或Gradle的pom.xml或build.gradle文件中...
Spring Quartz 是一个强大的...使用这个在线生成器,你可以快速地为你的Spring Quartz任务创建合适的调度表达式,提高开发效率。确保正确地将工具集成到项目中,并根据需要调整配置,以实现灵活且准确的定时任务管理。
在本文中,我们将讨论如何使用 Spring Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...
在IT行业中,动态加载属性文件和Spring Quartz的整合应用是一个重要的技术话题,特别是在构建大型、分布式和可扩展的系统时。下面将详细讲解这两个概念及其相互间的应用。 首先,我们来了解一下动态加载属性文件。...
Quartz是Java平台上的一个强大、完全可移植的作业调度库,可以用来创建复杂的调度任务,而Spring则是一个广泛使用的应用框架,提供了依赖注入、AOP(面向切面编程)等功能,将两者结合可以实现灵活的定时任务调度。...
- **配置方式**:Spring通过`<bean>`标签定义Job和Trigger,并使用`<job>`和`<trigger>`标签进行声明式配置,简化了Quartz的使用。 - **SpringBean注入**:Spring Quartz允许直接将Spring管理的Bean作为Job实例,...