2008-11-05 2 views
4

Я ищу использовать кварц для планирования электронной почты, но я не уверен, какой подход взять:Должен ли я создать новое задание кварца и триггер или одно задание и множество триггеров?

  1. Создать новую работу и триггер всякий раз, когда электронная почта планируется ИЛИ
  2. Создать одно задание, и создайте новый триггер каждый раз, когда будет отправлено электронное письмо.

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

Обновление: Эти письма будут запланированы пользователями, а не мной, поэтому я буду добавлять их программно во время выполнения, они не планируются в любое время.

ответ

6

Кварц предназначен для обработки десятков тысяч триггеров. Основным ограничением для масштабируемости здесь является пространство, доступное в вашем JobStore. JDBCJobStore, поддерживаемый разумной базой данных, должен иметь возможность обрабатывать сотни тысяч триггеров.

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

Что имеет значение —, и это действительно не имеет никакого отношения к самому Кварцу — заключается в том, что у вас есть необходимая полоса пропускания для выполнения пиковых нагрузок. Если пользователи склонны планировать рассылки писем в группах, вам нужно убедиться, что у вас есть вычислительные ресурсы, чтобы получать электронные письма. Это будет включать пропускную способность сети, обработку и достаточное количество рабочих потоков, настроенных для использования доступных ресурсов.

Обратите внимание, что вы можете настроить, что Quartz должен делать с помощью триггера, если он слишком сильно отстает при выполнении заданий. Вы можете продолжать пробовать, пропустить спусковой крючок и т. Д.

0

Вы можете рассмотреть возможность очередности или группировки набора электронных писем и провести одно или несколько периодических (или запланированных) заданий, которые затем будут выполнять «пакет».

Возможно, у вас может быть задание очереди Quartz электронной почтой для сбора и отправки коллекций работников.

Я бы не рекомендовал тысячи рабочих мест/триггеров кварца - это не предназначено для использования инструмента (IMHO).


EDIT: В ответ на комментарий ниже:

Я не рекомендовал бы тысячи рабочих мест Quartz/триггеров при использовании в качестве части рамки выполнения приложения в одной и той же виртуальной машины Java, работы/триггеры конкурировать за ресурсы с остальной частью приложения.

+1

«Кварц может использоваться для создания простых или сложных графиков для выполнения десятков, сотен или даже десятков тысяч заданий, задания, задачи которых определяются как стандартные компоненты Java или EJB». - Quartz Home Page – erickson 2008-11-05 02:58:57

+2

Авторы Quartz рекомендуют использовать его для сотен тысяч рабочих мест. Скручивание инструментов в роли, для которых они не были предназначены, - одно из моих любимых мотивов, так как это всегда приводит к неприятностям. Но в этом случае Кварц был специально разработан таким образом. – erickson 2008-11-05 16:48:34

+0

Я думаю, что мы ближе к соглашению, чем может показаться. Кварц, работающий самостоятельно, может обрабатывать столько заданий/триггеров, сколько вы хотите бросить на него. При использовании в структуре приложения я не хочу, чтобы он конкурировал с веб-приложением за ресурсы, поэтому я бы ограничил количество заданий/триггеров. – 2008-11-05 18:24:54

1

Являются ли триггеры основаны на расписании? Вы можете использовать CronTrigger, чтобы настроить более сложное расписание, основанное на времени, а не отдельные триггеры.

0

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

Смежные вопросы