Nano Hash - криптовалюты, майнинг, программирование

Должен ли я создать новое задание кварца и триггер или одно задание и много триггеров?

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

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

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

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


Ответы:


1

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

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

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

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

05.11.2008
  • Привет, Эриксон! Его можно будет настроить с помощью jobDataMap триггера (о существовании которого я не подозревал), поэтому я собираюсь действовать таким же образом. Я буду настраивать триггер, чтобы продолжать попытки, если он не удастся - нельзя пропустить электронные письма только потому, что в это время создается еще одно ... Спасибо. 05.11.2008

  • 2

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

    05.11.2008
  • Они будут по расписанию, но это разные электронные письма разным людям, поэтому более одного срабатывания триггера на самом деле мало что даст. 05.11.2008
  • Просто прочтите обновление. Разве это не означает, что вам все равно придется создавать несколько триггеров (во время выполнения)? Сколько пользователей могут составлять разные расписания? 05.11.2008
  • Да, будет много триггеров, но мне было интересно, не лучше ли попытаться сократить количество заданий, так что много триггеров для одного задания. 05.11.2008
  • Пока выполняемая работа всегда одна и та же, а переменные можно собирать динамически, да, у вас должна быть такая возможность. 05.11.2008

  • 3

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

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

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


    РЕДАКТИРОВАТЬ: в ответ на комментарий ниже:

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

    05.11.2008
  • Quartz можно использовать для создания простых или сложных расписаний для выполнения десятков, сотен или даже десятков тысяч заданий; задания, задачи которых определены как стандартные компоненты Java или EJB. - Домашняя страница Quartz 05.11.2008
  • Авторы Quartz действительно рекомендуют использовать его для сотен тысяч работ. Превращение инструментов в роли, для которых они не предназначены, - одна из моих любимых головокружений, так как это всегда приводит к неприятностям. Но в данном случае Quartz был специально разработан для такого масштабирования. 05.11.2008
  • Я думаю, что мы ближе к соглашению, чем может показаться. Quartz, работающий сам по себе, может обрабатывать столько заданий / триггеров, сколько вы захотите. При использовании в структуре приложения я не хочу, чтобы оно конкурировало с веб-приложением за ресурсы, поэтому я бы ограничил количество заданий / триггеров. 05.11.2008

  • 4

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

    18.06.2009
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..