Quartz или ScheduledExecutorService в веб-приложении Java

Для системного приложения Java, которое в настоящее время работает в командной строке и использует ScheduledExecutorService Я хотел бы написать простую версию веб-приложения, которая будет работать в контейнере сервлетов, таких как Apache Tomcat или Eclipse Jetty.

Я читал о Quartz как об одном из популярных планировщиков заданий для веб-приложений. Было бы лучше (возможно, из-за лучшей интеграции контейнера сервлетов) портировать это приложение с ScheduledExecutorService к кварцу?

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

3 ответа

Решение

Это зависит от того, для чего вы его используете.

Кварц полезен для запрограммированного времени, например, каждый час в час.

ScheduledExecutorService полезен для повторения задач, которые не должны выполняться в определенное время. Это проще и, возможно, более эффективно. Если у вас это работает, это означает, что вам не нужен Кварц.

ScheduledExecutorService работает на более низком уровне, и вам придется реализовать все средства мониторинга / обслуживания планирования.

Кварц имеет множество объектов, таких как постоянство работы, транзакции, кластеризация и т. Д.

Решение Java Executor позволяет вам:

  1. немедленно запустить задачу
  2. запускать задачу после начальной задержки (и при желании повторно запускать задачу после последующих циклов задержки).

Но 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

Другие вопросы по тегам