Skip to content

ChokaQФоновый обработчик заданий для .NET 10

Background job engine с durable-хранилищем в SQL Server, типизированными заданиями, retry, изоляцией очередей, health checks и дашбордом The Deck.

Логотип ChokaQ

Что такое ChokaQ

ChokaQ - это background job engine для .NET-приложений.

В обычном request/response-коде пользователь ждет, пока приложение выполнит всю работу. Для быстрых операций это нормально. Для медленных или ненадежных операций - отправки email, генерации отчетов, вызовов partner API, платежей или обработки webhooks - это плохая граница.

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

Базовая модель простая:

  1. Приложение ставит задание в очередь.
  2. ChokaQ сохраняет задание.
  3. Воркер забирает задание в работу.
  4. Ваш обработчик выполняется.
  5. ChokaQ фиксирует финальное состояние.
  6. Оператор может посмотреть, что произошло, в The Deck.

Ментальная модель

Удобно думать о ChokaQ как о трех совместно работающих частях:

ЧастьПростое объяснениеПочему это важно
Job storageDurable-журнал принятой работы.В SQL Server mode задания переживают restart процесса.
WorkersФоновые исполнители, которые забирают и выполняют задания.Работа выполняется вне request-пути.
The DeckОператорское окно в систему.Видны lag, ошибки, очереди, retries и строки DLQ.

Самая важная таблица - JobsHot. В ней находится активная работа: задания, которые ждут выполнения, уже забраны воркером или прямо сейчас обрабатываются. Завершенные задания уходят из Hot, чтобы таблица активной работы оставалась маленькой и быстрой.

Что читать первым

Если вы впервые смотрите на ChokaQ, начните с Runtime Model. Там объясняется, где ChokaQ работает, как он хранит work и как вызывает ваши handlers. Затем переходите к Обзору для более широкой картины.

Если хотите сразу запустить код, начните с Getting Started или Docker Compose Sample.

Если оцениваете надежность, прочитайте Delivery Guarantees до того, как писать обработчик, который отправляет email, списывает деньги или вызывает внешнюю систему.

Если хотите понять архитектуру, дальше идут Three Pillars, State Machine и SQL Concurrency.

Data flow

ШагЧто происходитСмысл для человека
EnqueueЗадание вставляется в JobsHot.Система приняла работу.
FetchВоркер забирает подходящую работу через SQL locking.Теперь заданием владеет один воркер.
ProcessingОбработчик выполняет пользовательский код.Выполняется бизнес-операция.
SuccessСтрока переносится в Archive.Задание завершилось штатно.
RetryСтрока остается в Hot с расписанием на будущее.Повторить позже, не удерживая спящий поток.
DLQСтрока переносится в Dead Letter Queue.Нужен разбор человеком или repair workflow.

Начните с малого

Сначала запустите пример, а потом читайте документацию, глядя на The Deck. UI помогает быстрее понять архитектуру: вы видите, как задания переходят между состояниями, а не только читаете об этом.

Лицензия Apache 2.0