Как остановить Spring @Scheduled из очереди заданий
У меня есть код, запускаемый каждые две минуты с использованием аннотации @Scheduled. Тем не менее, наша работа имеет тенденцию работать в течение более длительных периодов времени. Насколько я понимаю, аннотация @Scheduled ставит в очередь новые задания и запускает их, как только первое задание будет выполнено. Я не хочу, чтобы это произошло. Я хочу, чтобы выполнялся только 1 экземпляр задания, а не в очереди. Как я могу это сделать?
@Scheduled(cron = "0 */2 * * * ?")
public void twoMinMethod() {
// code here
}
1 ответ
Решение
Если вам не нужно запускать задания точно в минуту, возможно, вы захотите переключиться на другой синтаксис не-crontab, который разрешит подобные вещи. Приведенный ниже пример выполнит метод, подождет две минуты после его завершения, а затем выполнит его снова.
@Scheduled(fixedDelay=120000)
public void twoMinMethod() { ... }
Смотрите больше в весенней документации.