Spring任务计划程序多次运行单个任务
问题描述:
我有一个使用Spring的任务命名空间运行每分钟的计划程序。根据文档,它应该使用缓存池中的一个线程运行一次,延迟1分钟。但它会在随机时间之后再运行一次,比如之前运行的线程在不同线程上运行5秒。更何况,1分钟后它将运行应该运行的那个。但是5秒钟不应该运行。我在SO中看到过类似的问题,但没有报道解决方案。在我的情况下,它在我的本地环境中工作正常,而且这个问题只发生在开发环境中。这个Spring功能有什么问题吗?Spring任务计划程序多次运行单个任务
<task:annotation-driven scheduler="myScheduler" />
<task:scheduler id="myScheduler" pool-size="10"/>
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="mySchedulerBean"
method="doSomething" fixed-delay="60000" />
</task:scheduled-tasks>
<bean id="mySchedulerBean" class="com.mycompany.app.tasks.SchedulerBean"/>
答
对于那些使用老版本spring的人,他们需要升级到atleast 3.2.2。 如果它仍然不能解决问题,那么上下文很可能会部署两次。检查应用程序服务器部署配置以解决问题,或者在其他一些情况下,您可能正在执行基于注释的调度,并且也使用任务xml命名空间,您可以使用任一个,但不能同时使用两个。
这个上下文片段的任何机会部署两次? – 2014-10-17 22:32:40
@DirkLachowski不,本地和开发之间唯一的区别是服务器实例和一些设置。我不确定它会如何影响。 – 2014-10-18 05:23:27
你能否详细说明“几个设置”?这个功能在春天肯定不会被破坏(顺便说一句:你使用的是什么版本?)。 – 2014-10-18 08:26:40