Quartz
Общее описание
Блок Quartz активирует поток в заданные моменты времени, используя гибкие настройки через Cron-выражения или пользовательские календари. Поддерживает кластеризацию и обработку пропущенных срабатываний.
Блок Quartz может использоваться в качестве:
- блока – получателя.
Особенности работы Quartz в кластере
При работе ESB Core в кластерном режиме:
- Нет проверки уникальности: в кластерном режиме ESB Core не выполняются проверки уникальности имени или группы задания (Trigger name/Group Name). Это означает, что вы должны сами следить за тем, чтобы разные маршруты не создавали конфликтующие триггеры.
- Балансировка работает автоматически. Когда наступает время срабатывания триггера, первый узел, который захватит блокировку триггера, выполнит задание. В каждый момент времени задание выполняется ровно на одном узле.
- Если узел падает во время выполнения задания, другой узел кластера подхватывает его. Поведение определяется параметром
Recoverable Job- если он включён, Quartz обнаруживает зависшие задания упавшего узла и повторно запускает их на доступных узлах.
Параметры
В данном разделе описаны параметры блока Quartz, которые необходимо заполнить при его настройке. После заполнения нажмите Применить.
Базовые параметры
| Название в UI | Название атрибута | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|
| Description | description | Краткое описание блока. | Строка | |
| Group Name | groupName | Имя группы для планировщика Quartz. Комбинация имени группы и имени триггера должна быть уникальной. Гарантирует корректную идентификацию и управление задачами. При работе ESB Core в кластерном режиме (хранилище JobStore настроено, как кластерное) проверка на уникальность комбинации "имя группы + имя триггера" не выполняется. | Строка | |
| Trigger Name | triggerName | Обязательный параметр Имя триггера. Комбинация groupName + triggerName должна быть уникальной в пределах кластера Quartz. Это обеспечивает однозначную идентификацию и управление запланированными задачами. Если в кластере уже существует триггер с такой парой имени и группы, Quartz трактует это как один и тот же триггер: новый не создаётся, либо перезаписывается существующий. В результате только один поток будет запускаться по этому расписанию, остальные — нет. В кластерной конфигурации ESB Core все узлы используют общее хранилище Quartz (JobStore) для координации срабатываний. Поэтому уникальность пары groupName + triggerName требуется глобально — среди всех потоков и всех узлов кластера. | Строка | |
| Cron | cron | Cron‑выражение, задающее расписание запуска триггера Quartz (например, 0 0 12 * * ? — ежедневно в 12:00). | Строка | |
| Delete Job | deleteJob | Определяет, будет ли триггер Quartz автоматически удален из планировщика при остановке потока. При false триггер сохраняется в планировщике и может быть повторно использован при совпадении имен. Нельзя одновременно устанавливать deleteJob и pauseJob в true. При работе ESB Core в кластерном режиме триггеры не удаляются при остановке: когда узел кластера останавливается или выключается, триггеры, связанные с этим узлом, не ставятся на паузу и не удаляются. | True | Логическое значение |
| Durable Job | durableJob | Указывает, должен ли job сохраняться в планировщике Quartz после того, как становится «осиротевшим» (когда на него не ссылаются триггеры). | False | Логическое значение |
| Pause Job | pauseJob | Определяет, будет ли триггер Quartz приостановлен (paused) при остановке потока. Возможные значения:
pauseJob и deleteJob в true. При работе ESB Core в кластерном режиме триггеры не удаляются при остановке: когда узел кластера останавливается или выключается, триггеры, связанные с этим узлом, не ставятся на паузу и не удаляются. | False | Логическое значение |
| Recoverable Job | recoverableJob | Указывает планировщику Quartz, нужно ли повторно выполнять job в случае восстановления после сбоя или переключения на резервный узел (fail‑over). | False | Логическое значение |
| Stateful | stateful | Включает расширенные настройки Quartz: PersistJobDataAfterExecution (сохранение данных job после выполнения) и DisallowConcurrentExecution (запрет параллельного выполнения job). Используется вместо стандартного поведения job. | False | Логическое значение |
| Auto Start Scheduler | autoStartScheduler | Определяет, должен ли планировщик Quartz автоматически запускаться при старте потока. При true планировщик активируется без дополнительных действий. | True | Логическое значение |
| Trigger Start Delay | triggerStartDelay | Задержка (в миллисекундах) перед стартом триггера после запуска планировщика. Позволяет убедиться, что эндпоинт полностью инициализирован перед выполнением job. Отрицательное значение сдвигает время старта триггера в прошлое (относительно текущего момента). | 500 | Длинное целое число |
Расширенные параметры
| Название в UI | Название атрибута | Описание | Значение по умолчанию | Тип данных |
|---|---|---|---|---|
| Bridge Error Handler | bridgeErrorHandler | Определяет стратегию обработки ошибок на уровне интеграционного моста (bridge) в Bercut ESB. Отвечает за реакцию системы на сбои при передаче сообщений между компонентами. Может включать повторные попытки отправки, перенаправление в очередь ошибок, логирование и т. д. Функция доступна только для тех сторонних компонентов, которые позволяют системе получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают ошибки внутри себя — в таких случаях использование bridgeErrorHandler невозможно. | False | Логическое значение |
| Exception Handler | exceptionHandler | Определяет стратегию обработки исключений на уровне компонента. По умолчанию используется стандартный обработчик org.apache.camel.spi.ExceptionHandler, который логирует ошибки на уровнях WARN или ERROR и игнорирует их. Позволяет настроить кастомную логику обработки (повторные попытки, перенаправление в очередь ошибок и т. д.). | Строка | |
| Exchange Pattern | exchangePattern | Задает шаблон взаимодействия между компонентами в интеграционном потоке. Определяет способ передачи сообщений и ожидания ответа. Возможные значения:
| Строка | |
| Custom Calendar | customCalendar | Задает пользовательский календарь для планировщика Quartz, позволяющий исключить определенные диапазоны дат (например, выходные, праздники) из расписания выполнения триггеров. | Строка | |
| Ignore Expired Next Fire Time | ignoreExpiredNextFireTime | Определяет, игнорировать ли ошибки Quartz при планировании триггера, который никогда не сработает в будущем (например, cron‑триггер с расписанием в прошлом). При true система выдает предупреждение (WARN) и продолжает работу (поток не будет запускаться). При false — поток не стартует из‑за ошибки. | False | Логическое значение |
| Job Parameters | jobParameters | Позволяет настроить дополнительные параметры для job в Quartz. Многозначная опция с префиксом job. (например, передача пользовательских данных в job). | Строка | |
| Prefix Job Name with Endpoint ID | prefixJobNameWithEndpointId | Указывает, нужно ли добавлять идентификатор эндпоинта в начало имени job. Это помогает избежать конфликтов имен при использовании нескольких потоков с одинаковыми именами job. | False | Логическое значение |
| Trigger Parameters | triggerParameters | Позволяет задать дополнительные параметры для триггера Quartz. Возможные значения:
repeatInterval ≤ 1000 мс первые события после старта контекста системы могут срабатывать чаще ожидаемого. | Строка | |
| Using Fixed Camel Context Name | usingFixedCamelContextName | Определяет способ ссылки на CamelContext в JobDataMap. Возможные значения:
| False | Логическое значение |