Как остановить Spring @Scheduled из очереди заданий

У меня есть код, запускаемый каждые две минуты с использованием аннотации @Scheduled. Тем не менее, наша работа имеет тенденцию работать в течение более длительных периодов времени. Насколько я понимаю, аннотация @Scheduled ставит в очередь новые задания и запускает их, как только первое задание будет выполнено. Я не хочу, чтобы это произошло. Я хочу, чтобы выполнялся только 1 экземпляр задания, а не в очереди. Как я могу это сделать?

@Scheduled(cron = "0 */2 * * * ?")
public void twoMinMethod() {
    // code here
}

1 ответ

Решение

Если вам не нужно запускать задания точно в минуту, возможно, вы захотите переключиться на другой синтаксис не-crontab, который разрешит подобные вещи. Приведенный ниже пример выполнит метод, подождет две минуты после его завершения, а затем выполнит его снова.

@Scheduled(fixedDelay=120000)
public void twoMinMethod() { ... }

Смотрите больше в весенней документации.

Другие вопросы по тегам