Spring Quartz 调度器的使用
一下是本人是用的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> <!-- 启动触发器的配置结束 -->
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
spring的调度是有默认线程数限制的,默认是10,如果任务“堆积”比较多,没有足够的线程支持,任务自然就押后了,
要配置org.quartz.threadPool.threadCount等
我做了一下测试:
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,此时程序不执行调度器。
总结:当系统发布后调度器只会在当天设定的时间点上运行一次,并且系统将记录今天的调度器已经运行过了,如果改动当天运行的时间时,想在运行调度器,系统会判读今天调度器是否执行过,如果执行过此次将不再执行调度器。