Quartz или ScheduledExecutorService в веб-приложении Java
Для системного приложения Java, которое в настоящее время работает в командной строке и использует ScheduledExecutorService
Я хотел бы написать простую версию веб-приложения, которая будет работать в контейнере сервлетов, таких как Apache Tomcat или Eclipse Jetty.
Я читал о Quartz как об одном из популярных планировщиков заданий для веб-приложений. Было бы лучше (возможно, из-за лучшей интеграции контейнера сервлетов) портировать это приложение с ScheduledExecutorService
к кварцу?
Добавление другой зависимости библиотеки в приложение не является проблемой, меня интересуют технические причины, препятствующие использованию ScheduledExecutorService
,
3 ответа
Это зависит от того, для чего вы его используете.
Кварц полезен для запрограммированного времени, например, каждый час в час.
ScheduledExecutorService полезен для повторения задач, которые не должны выполняться в определенное время. Это проще и, возможно, более эффективно. Если у вас это работает, это означает, что вам не нужен Кварц.
ScheduledExecutorService работает на более низком уровне, и вам придется реализовать все средства мониторинга / обслуживания планирования.
Кварц имеет множество объектов, таких как постоянство работы, транзакции, кластеризация и т. Д.
Решение Java Executor позволяет вам:
- немедленно запустить задачу
- запускать задачу после начальной задержки (и при желании повторно запускать задачу после последующих циклов задержки).
Но Quartz дает вам невероятную гибкость в отношении того, когда и как часто выполнять задачу / задание. Например, одно расписание в рабочую неделю с понедельника по пятницу и другое (или не совсем) в выходные дни. Или в последний день месяца, и вам не нужно выяснять, является ли последний день данного месяца 28-го, 29-го, 30-го или 31-го. Вот еще несколько примеров гибкости, которую обеспечивает планирование в стиле cron - http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html
Использовать библиотеку Java проще, но для тех, кто хочет начать работу с примером работы с Quatbase на чистой кодовой базе, я собрал этот шаблон для бесплатного скачивания - https://github.com/javateer/quartz-example