Блог компании OTUS. Онлайн-образование
Программирование
Java
Комментарии 11
+1
Добрый вечер. А почему нельзя обойтись @EnableScheduling вместе с @Scheduled(cron = "* * * * * *")?
0

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

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

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

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

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

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

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

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

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

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

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

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