Перейти к основному содержимому

Background Job:

Назначение

Опиши, какую операционную или доменную задачу выполняет job: reconciliation, expiry, projection rebuild, provider polling, notification dispatch или maintenance.

Классификация

ПолеЗначение
Сервис<service-name>
Тип jobScheduled / Recurring / Queue worker / One-off
Trigger<cron/topic/manual command>
Критичность<tier>

Расписание И Locking

АспектПравило
Schedule<cron/timezone>
Distributed lock<lock key, ttl, owner>
Batch size<number>
Max duration<duration>

Входная Модель <JobRequestModel>

ПолеТипОбязательностьИсточникОписание
TenantIdTenantIdДа/Нет<schedule scope/manual input>Tenant boundary.
<FieldName><Type>Да/Нет<source><описание>

Алгоритм

  1. Получить lock и correlationId.
  2. Определить tenant/brand scope; cross-tenant scan разрешен только если описан явно.
  3. Загрузить batch по stable ordering key.
  4. Для каждой записи применить документированное бизнес-правило job (обновить состояние/проекцию, отправить уведомление — по типу job).
  5. Сохранить progress checkpoint и idempotency result.
  6. Зафиксировать факты изменений: опубликовать доменные/интеграционные события, если job меняет своё состояние (события публикуются надёжно, без потерь).
  7. Освободить lock и записать metrics.

Граница Транзакции

ЭлементПравило
Unit of work<per item/per batch>
Сохраняемое состояние<entities/checkpoints/audit/outbox>
External calls<before/after commit with retry>
Частичная ошибка<continue/stop/quarantine>

Идемпотентность И Retry

СценарийПравило
Job restart<resume from checkpoint>
Duplicate item<dedupe key>
Повторяемая ошибка<retry policy>
Poison item<quarantine/DLQ/manual review>

Наблюдаемость

ТипПравило
Logs<started/batch processed/item failed/completed>
Metrics<duration/items processed/errors/backlog/lock contention>
TracescorrelationId, tenantId, job run id
Alerts<stuck job/backlog/error rate>

Связанный Runbook

СценарийRunbook
<failure mode><link>

Тесты

ТестОжидание
Empty batch<no-op success>
Partial failure<checkpoint and retry behavior>
Duplicate run<single lock owner/idempotent result>
Cancellation<graceful stop>

Обратные ссылки

Автоссылки: где используется этот документ.