Время вызвало работу Cron или Quartz? - PullRequest
8 голосов
/ 23 июня 2009

Я уже задавал отдельный вопрос о том, как создать событие, запускаемое по времени в Java . Меня познакомили с Кварцем. В то же время, я также гуглю онлайн, и люди говорят, что cron в Unix - это отличное решение.

Какой из них лучше? Какие минусы и плюсы?

Некоторые спецификации системы: * ОС Unix * программа написана на Java * У меня есть очередь задач с 1000+ записями, для каждой временной метки может быть запущено до 500 задач.

Ответы [ 2 ]

20 голосов
/ 23 июня 2009
  1. Использование cron, кажется, добавляет другую точку входа в ваше приложение, в то время как Quartz интегрируется в нее. Таким образом, вы будете вынуждены иметь дело с каким-то межпроцессным взаимодействием, если вы хотите передать некоторую информацию в / из процесса, вызванного из cron. В Quartz вы просто (хе-хе) запускаете несколько потоков.
  2. cron зависит от платформы, Quartz - нет.
  3. Quartz может позволить вам надежно убедиться, что задача запущена в данный момент или через некоторое время после того, как сервер не работал в течение некоторого времени. Чистый cron не сделает это за вас (если вы не справитесь с этим вручную).
  4. Quartz имеет более гибкий язык выражения событий (когда задачи должны быть запущены).
  5. Рассмотрим объем памяти. Если ваши отдельные задачи не имеют ничего общего или мало, то может быть лучше запустить их из операционной системы как отдельный процесс. Если они делятся большим количеством информации, лучше иметь их как потоки в одном процессе.
  6. Не совсем уверен, как вы могли бы справиться с кластеризацией в подходе cron. Quartz может использоваться с Терракотовая по шаблону масштабирования (я не пробовал, но считаю, что это выполнимо).
3 голосов
/ 25 июня 2009

Плюсом для cron является то, что любой системный администратор знает, как его использовать, и это задокументировано во многих местах. Если cron выполнит эту работу, то это действительно будет предпочтительным решением.

...