Skip to content

Что такое Jobby

Jobby — это высокопроизводительная библиотека для управления фоновыми задачами для .NET. Она создана для тех, кому нужна максимальная эффективность, строгая согласованность данных и богатая функциональность без компромиссов. Jobby сочетает в себе лучшие практики из мира очередей, планировщиков и паттернов CQRS, предлагая интуитивно понятный и расширяемый API.

Если вы ищете более быструю и экономичную замену Hangfire или Quartz — Jobby — ваше решение.

Основные возможности

Jobby предлагает широкий спектр функций для работы с фоновыми задачами:

  • Команды и Обработчики (CQRS-подход). Вдохновленный паттерном MediatR, API Jobby позволяет описывать задачи как простые команды (POCO-объекты) и обрабатывать их в отдельных классах-обработчиках, что делает код чистым, тестируемым.
  • Гибкие сценарии выполнения.
    • Запуск задач через очередь по принципу fire and forget.
    • Запуск с задержкой: Отложите выполнение задачи на определенное время.
    • Задачи по расписанию: Настраивайте периодическое выполнение задач с помощью CRON-выражений, простых интервалов или создавайте свои собственные планировщики, реализовав необходимый интерфейс.
  • Транзакционность и Консистентность. Важная особенность Jobby — возможность создания нескольких задач в одной транзакции и создания задач непосредственно в бизнес-транзакции вашего приложения. Благодаря простой интеграции с Entity Framework и другими ORM, вы можете легко реализовать паттерн Transactional Outbox, гарантируя, что задача будет поставлена в очередь только в случае успешного завершения всех операций с данными.
  • Контроль порядка выполнения. Jobby дает вам полный контроль над последовательностью обработки:
    • Настройка порядка: При создании пачки задач можно явно указать, в каком порядке они должны быть выполнены.
    • Группы последовательного выполнения (Serializable Groups): Объединяйте задачи по ключу (например, OrderId). Все задачи внутри одной группы будут обрабатываться строго последовательно, что идеально подходит для событий, связанных с одним бизнес-процессом (аналогично partition key в Kafka).
  • Надежность и Отказоустойчивость.
    • Политики повторов: Настраивайте гибкие правила для автоматического повторного выполнения упавших.
    • Устойчивость к сбоям: Jobby спроектирован для работы в распределенных системах и гарантирует выполнение задач даже при временной недоступности отдельных компонентов или базы данных.
  • Расширяемость и Масштабируемость.
    • Масштабируемость: Jobby корректно работает в сервисах, запущенных в нескольких экземплярах.
    • Мультиочереди: Распределяйте задачи по разным очередям, чтобы критичные операции не блокировались второстепенными.
    • Middleware Pipeline: Встраивайте собственную логику в конвейер выполнения задач — логирование, измерение времени, управление блокировками и многое другое.

Почему Jobby?

Jobby создавался с прицелом на современные реалии разработки, где важна не только функциональность, но и эффективность использования ресурсов.

  • Высокая производительность. По результатам бенчмарков Jobby работает в несколько раз быстрее Hangfire и Quartz. Это достигается за счет минималистичной схемы базы данных, объединения нескольких команд в один SQL-запрос и эффективного использования возможностей многопоточности и асинхронности.
  • Низкое потребление ресурсов. Минимальная нагрузка на CPU и RAM вашего .NET-приложения, а также щадящий режим работы с базой данных. Jobby не создает лишних соединений и не генерирует бесполезную нагрузку, позволяя вашему приложению обрабатывать больше пользовательских запросов.
  • Современный мониторинг (OpenTelemetry). Метрики и трейсинг из коробки.
  • Простота интеграции. Jobby создан для экосистемы .NET 8+ и СУБД PostgreSQL (с возможностью расширения в будущем и на другие хранилища). Он бесшовно интегрируется с AspNetCore и стандартным DI-контейнером, не требуя сложных конфигураций.

Резюме

Jobby — это выбор команд, которые ценят:

  • Консистентность данных превыше всего.
  • Функциональность, покрывающую как простые, так и сложные сценарии (группы, порядок, outbox).
  • Расширяемость и возможность подстроить библиотеку под свои нужды.
  • Масштабируемость от монолита до распределенного кластера.
  • Надежность и уверенность в том, что задача не будет потеряна из-за сбоя.
  • Высокую производительность и экономию ресурсов сервера.

Переходите к разделу Быстрый старт, чтобы увидеть Jobby в деле!