Что такое 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 в деле!