我有一个使用Spring的任务命名空间每分钟运行一次的调度程序。根据文档,它应该使用缓存池中的一个线程运行一次,延迟为1分钟。但是它会在一段随机的时间后再运行一次,比之前运行的不同的线程说5秒。更不用说,1分钟后它将运行应该运行的那个。但是5秒钟不应该运行。我在SO中看到了类似的问题,但没有报道解决方案。在我的情况下,它在我的本地环境中工作正常,这个问题只发生在开发环境上。这个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"/>
答案 0 :(得分:0)
对于使用旧版弹簧的用户,他们需要升级至至少3.2.2。 如果它仍然无法解决问题,那么上下文很可能会被部署两次。检查应用服务器部署配置以解决问题,或者在某些其他情况下,您可能正在进行基于注释的调度并且还使用任务xml命名空间,您可以使用其中一个但不能同时使用两者。