我正在使用Springboot开发一个Web服务器。
在我的项目中,我需要定期执行一些任务,因此我使用了“计划:
import org.springframework.scheduling.annotation.Scheduled;
public class TextFilter {
@Scheduled(fixedDelay = 5 * 60 * 1000) // 5min
public void updateSensitiveWords() {
// do something
}
}
如您所见,函数updateSensitiveWords
将在最后一次执行完成后5分钟执行。
但是,我需要担心的情况是,由于某种原因,执行可能花费太多时间,例如20分钟。因此,我认为需要为函数设置一个超时,如下所示:
public class TextFilter {
@Scheduled(fixedDelay = 5 * 60 * 1000, timeout = 2 * 60 * 1000)
public void updateSensitiveWords() {
// do something
}
}
这意味着,如果函数的执行时间超过2分钟,则中止/停止执行并等待下一次。
正确的方法是什么?Springboot是否提供了某种机制来做到这一点?
1条答案
按热度按时间wbgh16ku1#
我在此处找到了另一个可能与您的问题相关的问题https://stackoverflow.com/a/31740351/10297961
答案建议您应该尝试实现一些ThreadPoolTaskScheduler配置来控制您的调度程序