Spring Boot Scheduler fixedDelay和cron

时间:2018-03-19 20:47:36

标签: spring spring-boot scheduler

我正在运行一个春季启动计划过程,需要5-10秒才能完成。完成后,再过程开始60秒(注意我没有使用fixedRate):

@Scheduled(fixedDelay=60_000)

现在,我希望将其限制为每周一至周五上午9点至下午5点运行。我可以用

完成这个
@Scheduled(cron="0 * 9-16 ? * MON-FRI")

问题在于这类似于fixedRate - 无论完成上一次运行所花费的时间多少,该过程都会触发60秒...

任何方法将这两种技术结合起来?

2 个答案:

答案 0 :(得分:1)

您可以将固定延迟(以及任何其他数量的可选参数)传递给注释,如下所示:

@Scheduled(cron="0 * 9-16 ? * MON-FRI", fixedDelay=60_000)

来自文档:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/annotation/Scheduled.html

答案 1 :(得分:1)

尝试一下:

@Schedules({ 
  @Scheduled(fixedRate = 1000), 
  @Scheduled(cron = "* * * * * *")
})