Как ждать @Scheduled до того, как предыдущее задание не будет завершено? - PullRequest
0 голосов
/ 04 января 2019

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

@Scheduled(fixedRate = 2000)
    public void scheduleTaskWithFixedRate() {
        logger.info("Fixed Rate Task :: Execution Time - {}", dateTimeFormatter.format(LocalDateTime.now()) );
    }

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Использовать fixedDelay

fixedRate: заставляет Spring запускать задачу через периодические интервалы, даже если последний вызов все еще выполняется.

fixedDelay: специально контролирует время следующего выполнения, когда заканчивается последнее выполнение.В коде:

@Scheduled(fixedDelay=5000)
public void updateEmployeeInventory(){

}    

@Scheduled(fixedRate=5000)
public void updateEmployeeInventory(){

}
0 голосов
/ 04 января 2019

Вместо fixedRate используйте fixedDelay:

@Scheduled(fixedDelay = 2000)

Задача будет выполняться fixedDelay миллисекунд одна за другой

Выполнить аннотированный метод с фиксированным периодом в миллисекундах между концом последнего вызова и началом следующего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...