К содержимому

Фоновые обработчики ​

Фоновые обработчики выполняют работу после пользовательского запроса или по времени. Наличие записи в очереди, включённого сценария или настроенного SMTP ещё не означает, что соответствующий обработчик работает и действие завершилось.

В текущем серверном комплекте при запуске автоматически возобновляются только search и background. Почтовая доставка, автоматизация, уведомления, webhook и другие бизнес-обработчики требуют отдельной эксплуатационной настройки и проверки. Поэтому успешный запуск Docker сам по себе не подтверждает готовность всех бизнес-функций.

Что показывает состояние ​

Внутренняя проверка готовности приложения возвращает состояние runtime обработчиков. Для каждого доступны имя, признак enabled и последняя ошибка failure; отдельно отражается выполнение цикла. Это техническая диагностика для оператора, а не журнал доставки конкретного письма.

Штатный healthcheck.mjs возвращает только код завершения. Для просмотра полей выполните из каталога deploy следующий запрос внутри работающего app. Он выводит только блок workers, не настройки и секреты:

sh
docker compose --env-file .env -f compose.yml exec -T app node --input-type=module -e 'try { const r = await fetch("http://127.0.0.1:8080/health/ready", {signal: AbortSignal.timeout(4000)}); const d = await r.json(); console.log(JSON.stringify(d.workers, null, 2)); process.exitCode = r.ok && d.ready ? 0 : 1; } catch { console.error("READINESS_INSPECTION_FAILED"); process.exitCode = 1; }'

Для S3 вставьте -f compose.s3.yml сразу после -f compose.yml. Запрос не изменяет очередь и не включает обработчики. При неготовности приложения возможен код 1 даже с выведенным состоянием workers; при остановленном app команда exec не выполнится. Публичный health endpoint открывать не нужно.

ПризнакКак понимать
enabledОбработчик допущен к следующим циклам
failure отсутствуетПоследний зафиксированный цикл не оставил ошибку
failure с uncertainРезультат записи нельзя считать определённым
runtime runningСейчас выполняется цикл, а не обязательно конкретное ожидаемое задание

Состояние enabled не гарантирует, что очередь пуста, реквизиты интеграции верны или внешний получатель принял сообщение. При ошибке с подтверждённой либо неопределённой фиксацией runtime отключает соответствующий обработчик, чтобы оператор мог разобраться с результатом.

Подготовка к включению ​

После переноса или восстановления сначала сверяют незавершённые задания, курсоры и уже выполненные внешние действия. Проверяют адресатов, доступы, конфигурацию транспорта и допустимость повторов. Затем согласуют набор обработчиков и выполняют контролируемую приёмку на тестовых данных.

В поставляемой оболочке ngensia.sh нет универсальной команды включения всех workers. Не копируйте вызовы из исходного кода в production-консоль и не считайте перезапуск способом безопасно переиграть очередь. Изменение состава автоматически запускаемых обработчиков относится к проверяемому изменению серверного релиза.

При задержке действия установите три факта: задание действительно создано, нужный обработчик активен, результат не заблокирован ошибкой либо внешней системой. Зафиксируйте идентификаторы задания и время, затем сопоставьте их с журналами. При неопределённом результате проверьте внешнюю сторону до повторного запуска.

Готовность и журналы · Обновление приложения · Аварийное восстановление

Сверено с версией 0.9 · редакция 13.10.2026

Документация NGENSIA · Работа, настройка и эксплуатация