Комментарии
Добрый вечер. А почему нельзя обойтись @EnableScheduling вместе с @Scheduled(cron = "* * * * * *")?

Есть предположение, что для удобства масштабирования сервиса в кластере: Quartz вполре себе умеет держать информацию о задачах и их состоянии в БД. Если же баловаться с аннотациями, то придеться самому думать над тем, как, например, ограничить одновременный запуск задачи на разных нодах. Если где не прав — критику и пояснения приветствую.

По своему опыту могу сказать что кварц — штука крайне неудобная, с запутанным API и создаёт кучу непонятных таблиц, которых сложно контролировать.
Как уже выше писали @EnableScheduling работает превосходно. Лок на уровне базы, если надо, делается элементарно. Если требуется динамическое обновление, то это делается в один класс.
В конце концов, можно периодически запускать проверку и через CronSequenceGenerator узнавать нужно ли что либо выполнять в данный момент.

А если без базы, то прекрасно локи ставятся через zookeeper
В 2013 писали на кварце приложение большое, что ни месяц — бага на проде. Зависла Джоба.

@EnableScheduling работает превосходно. Лок на уровне базы, если надо, делается элементарно.

sved подскажите бест практис, плиз. Заранее благодарю.

cepro про лок или scheduling?

В спринге есть TaskExecutor и TaskScheduler, которые позволяют programaticaly запускать асинхронные задачи или shсhedul-ить (в том числе и по cron-у)

Им соответствуют аннотации на методы Async и @Scheduled, которые упрощают эту задач, до безобразно простого уровня

sved это я знаю )
Я "лок" имел в виду. Я, в принципе, представил реализацию, но есть вопросы. Поэтому интересно было узнать как это делают другие..

1. можно использовать ShedLock, настраивается несложно, работает на аннотациях. Мне не нравится, в т.ч. из-за кривого названия:)
2. запрос в БД вида
INSERT ... ON CONFLICT UPDATE ... RETURN ...
. вызывать можно внутри метода, помеченного, как @Scheduled, установив его в самом начале. если insert/update проходит и что-то вернулось, выполняем дальнейшие действия

Огромное спасибо за наводку на ShedLock! На первый взгляд — замечательное решение, не смотря на название )
Но, кроме названия, как я понял есть какие-то др. недостатки?

показалось слишком громоздко ради небольшого функционала тянуть в проект либу с аспектами
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.