Spring Quartz 调度器的使用

pengcheng_1024 发布于 2013/03/15 15:57
阅读 1K+
收藏 1

一下是本人是用的spring的Quartz的调度器,我将参数设定的是每天的10:30分就执行一下调度任务。

1:我将项目发布之前设定我的系统时间是10:26,然后发布好项目,当到系统时间到了10:30时,就会执行调度任务。

2:我将系统时间更改为10:28,但是当系统时间到10:30的时候为什么调度器不再执行调度任务??

希望知道的,给予讲解一下。感谢了

<!-- job的配置开始 -->
	<bean id="myJobDetail" 	class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="prodMaterialRequirementController" />
		</property>
		<property name="targetMethod">
			<value>updateStorages</value>
		</property>
	</bean>
	<!-- job的配置结束 -->
	<!-- 调度的配置开始,每天的10:30触发 -->
    <bean id="crontestJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="myJobDetail" />
        </property>
 
        <property name="cronExpression"  value="0 30 10 * * ? *"/>
    </bean>
    <!-- 调度的配置结束 -->
     <!-- 启动触发器的配置开始 -->
    <bean name="startQuertz" lazy-init="false" autowire="no"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="crontestJobTrigger" />
            </list>
        </property>
    </bean>
    <!-- 启动触发器的配置结束 -->
加载中
0
pengcheng_1024
pengcheng_1024

我做了一下测试:

1:项目发布之后,系统是准时的当天时间(2013-03-15-10:28,当系统时间为10:30后,程序开始执行调度器

2:在1的基础上,将当天时间改到(2013-03-15-10:28),等待系统时间到10:30,此时程序不执行调度器

3:在1的基础上,将系统时间(2013-03-16-10:28),等到系统时间运行到10:30时,程序开始执行调度器

4:在1的基础上,将当天时间改到(2013-03-15-10:28),等待系统时间到10:30,此时程序不执行调度器

总结:当系统发布后调度器只会在当天设定的时间点上运行一次,并且系统将记录今天的调度器已经运行过了,如果改动当天运行的时间时,想在运行调度器,系统会判读今天调度器是否执行过,如果执行过此次将不再执行调度器。

0
会飞的石头
会飞的石头

spring的调度是有默认线程数限制的,默认是10,如果任务“堆积”比较多,没有足够的线程支持,任务自然就押后了,

要配置org.quartz.threadPool.threadCount等

返回顶部
顶部