Comments 16
еще можно сделать так:
@Scheduled(cron = "* * * * * *")
@Scheduled(cron = "* * * * * *")
+5
Я уж было приготовился по старой памяти (еще со спринга 2.x) к долгому прикручиванию quartz-а и написании кучи конфигов на xml, как оказалось все значительно проще
Я как раз на днях вспоминал о quartz-е, так как и мне нужно настроить выполнение некого кода по расписанию. А оказывается, можно сделать так. Спасибо!
0
А вот интересно — сконфигурил я такой аннотацией запуск чего-либо раз в 5 секунд, а потом обнаружил, что это слишком часто/редко. Можно переконфигурить настройки для этого места снаружи?
0
нет
0
Ну в более сложном случае и конфигурация будет сложней — вам надо будет задать свой Trigger, сконфигурировать его из properties-файла и потом дергать задачи используя этот триггер
В этому случае как раз придется писать много xml — и аннотацией не получится воспользоваться
Все подробно написано в спринговой доке — я тут намеренно привел простейний пример
В этому случае как раз придется писать много xml — и аннотацией не получится воспользоваться
Все подробно написано в спринговой доке — я тут намеренно привел простейний пример
+1
В Play Framework тоже делается довольно просто:
import play.jobs.*;
/** Fire at 12pm (noon) every day **/
@On("0 0 12 * * ?")
public class Bootstrap extends Job {
public void doJob() {
Logger.info("Maintenance job ...");
...
}
}
0
Есть ещё прекрасная аннотация Every:
@Every(«5min»)
public class Bootstrap extends Job {
…
}
@Every(«5min»)
public class Bootstrap extends Job {
…
}
-1
И я бы сказал, что не «В Play Framework тоже делается довольно просто», а «В Play Framework тоже делается ещё проще», потому что нет никаких конфигурационных xml-файлов.
-2
Отсутствие конфигурационных файлов — это на самом деле недостаток, а не достоинство.
Потому что когда в продакшене обнаруживается проблема с настройками планировщика, перекомпилировать и обновлять сервер никто не позволит.
Потому что когда в продакшене обнаруживается проблема с настройками планировщика, перекомпилировать и обновлять сервер никто не позволит.
+1
Активно пользуюсь аннотацией @Scheduled. Из недостатков можно отметить невозможность отключения крона (только указав день/месяц/деньНедели максимально отдалённый от текущей даты) и невозможность указания имени треда.
0
Scheduled понравился больше чем кварц. по-моему он по легче и по стабильнее.
Из интересных моментов хочу добавить:
если внутри метода doSomething происходит исключение, любое, то весь Scheduled отвалится и не следующее событие по расписанию не произойдет.
После перезапуска приложения — всё норм…
Так что коллеги, если используете Scheduled, не забывайте ваш код оформлять в try-catch
В том же кварце таких глюков не обнаружено. Но с ним тоже были определенные мучения.
Например, задать запуск — каждое воскресение. обязательно напротив дня месяца нужно ставить ?, а не *. Иначе он вообще не запустится
Из интересных моментов хочу добавить:
если внутри метода doSomething происходит исключение, любое, то весь Scheduled отвалится и не следующее событие по расписанию не произойдет.
После перезапуска приложения — всё норм…
Так что коллеги, если используете Scheduled, не забывайте ваш код оформлять в try-catch
В том же кварце таких глюков не обнаружено. Но с ним тоже были определенные мучения.
Например, задать запуск — каждое воскресение. обязательно напротив дня месяца нужно ставить ?, а не *. Иначе он вообще не запустится
+1
Sign up to leave a comment.
Выполнение кода по расписанию в Spring Framework