awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
sorentwo avatar

sorentwo/oban

0
View on GitHub↗
3,930 stars·365 forks·Elixir·Apache-2.0·17 viewsoban.pro↗

Oban

Oban is a relational database-backed job processor and task scheduler for Elixir applications. It functions as a distributed workflow orchestrator that leverages database primitives to ensure job persistence, reliability, and consistent state management across clusters.

The system distinguishes itself through complex workflow orchestration, enabling the composition of task dependencies using batching, sequential processing, and fan-out or fan-in patterns. It provides global throughput limiting and uniqueness enforcement to prevent duplicate work and protect downstream resources across distributed nodes.

The project covers a broad range of capabilities including scheduled and recurring execution, named queue segmentation, and automated retry logic for failed tasks. It includes observability tools for tracking queue health and job performance metrics via telemetry event streams.

Administrative controls allow for the dynamic configuration of job priorities and the pausing or resuming of queues at runtime.

Features

  • Background Job Processing - Provides a distributed system for offloading and managing asynchronous tasks across a cluster using a relational database.
  • Relational Database Job Queues - Leverages a relational database as the primary source of truth for job persistence, reliability, and state management.
  • Relational Database Processors - Uses a relational database as the single source of truth for task persistence and scheduling, eliminating the need for separate brokers.
  • Background Task Schedulers - Manages the execution of delayed and recurring background jobs with integrated retry logic and failure handling.
  • Lifecycle State Machines - Manages job transitions through a formal state machine including available, executing, and retryable states to ensure reliable delivery.
  • Distributed Concurrency Controls - Limits the number of simultaneous tasks across a distributed cluster to protect downstream resources and prevent system overload.
  • Concurrency Control - Limits the number of parallel jobs executing within a specific queue to prevent system overload.
  • Distributed Workflow Orchestrators - Coordinates complex sequences of distributed tasks and manages their persistent execution state across multiple nodes.
  • Job Queues - Implements named queues to segment workloads and isolate resource consumption across different job categories.
  • Recurring Job Scheduling - Enables tasks to be scheduled for execution at a specific future time or on a recurring timetable.
  • Elixir Job Queues - Provides a durable, database-backed task processor specifically designed for Elixir applications.
  • Job Lifecycle Management - Tracks tasks through a defined set of states, such as available, executing, and retryable, to manage the full job lifecycle.
  • Database-Backed Deferred Queues - Uses a relational database as the primary persistent store for scheduling and managing the lifecycle of background tasks.
  • Concurrency-Limited Queues - Provides named queues with independent concurrency limits to isolate failures and protect downstream resources from overload.
  • Distributed Workflow Orchestration - Coordinates complex task dependencies using batching, sequential processing, and fan-out/fan-in patterns.
  • Complex Workflow Coordination - Enables the coordination of complex task dependencies using batching, sequential processing, and fan-out/fan-in patterns.
  • Global Job Concurrency Limits - Enforces a maximum number of simultaneous background jobs across a distributed cluster to protect downstream resources.
  • Job - Prevents duplicate jobs from being queued based on unique identifiers derived from arguments or queues.
  • Database Event Listeners - Utilizes database-level notify/listen events to wake up workers immediately when new jobs are available, reducing polling overhead.
  • Job State Querying - Provides capabilities to retrieve and modify background job records using filtered database queries.
  • Database-Driven Schedulers - Implements a background job system that uses PostgreSQL primitives for scheduling and state management.
  • Runtime Queue Management - Allows starting, stopping, pausing, and resuming queues at runtime without requiring an application restart.
  • Automated Job Retries - Automatically reschedules failed tasks for execution with support for custom retry limits and overrides.
  • Queue Pause and Resume Controls - Provides controls to temporarily stop a queue from receiving new jobs for maintenance or resource timing.
  • Distributed Leader Election - Implements cluster-wide coordination using database advisory locks to ensure only one node acts as the leader for specific operations.
  • Job Priority Management - Assigns importance levels to tasks within a queue to ensure high-priority work is executed first.
  • Dynamic Job Managers - Allows for the modification of job priorities, schedules, and scaling parameters at runtime without requiring an application restart.
  • Job Cancellation - Provides mechanisms to terminate active jobs and trigger necessary resource cleanup across the cluster.
  • Transactional Enqueueing - Ensures atomic job scheduling by wrapping the enqueueing process within the same database transaction as the business logic.
  • Unique Job Enqueueing - Supports reliable asynchronous task insertion with built-in uniqueness constraints to prevent duplicate work.
  • Job Batching - Groups multiple background tasks into batches to track collective progress and trigger completion callbacks.
  • Execution Telemetry Pipelines - Streams structured lifecycle events and runtime metrics via telemetry to external monitoring systems for real-time health tracking.
  • Queue Performance Metrics - Records runtime metrics for every queue to track cluster performance and system health.
  • Job Lifecycle Telemetry - Integrates with telemetry systems to stream structured lifecycle events for logging, error reporting, and health checks.
  • Message Queues - Asynchronous job processor powered by PostgreSQL.
  • Embedded Workflow Libraries - Robust job processing library for Elixir applications.

Star history

Star history chart for sorentwo/obanStar history chart for sorentwo/oban

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Oban

Similar open-source projects, ranked by how many features they share with Oban.
  • oban-bg/obanoban-bg avatar

    oban-bg/oban

    3,812View on GitHub↗

    Oban is a distributed background job processing system and task scheduler that uses PostgreSQL for transactional job storage and reliable execution across multiple nodes. It serves as a PostgreSQL-backed background worker and job queue, coordinating task execution and concurrency through a relational database to ensure delivery guarantees. The system differentiates itself through a distributed workflow orchestrator capable of managing multi-step processing pipelines, dependent job sequencing, and shared context. It provides advanced orchestration tools including job batching, chunked processi

    Elixir
    View on GitHub↗3,812
  • riverqueue/riverriverqueue avatar

    riverqueue/river

    5,252View on GitHub↗

    River is a transactional job queue and distributed job scheduler for Go that uses PostgreSQL for persistence and state management. It functions as a resumable task framework, allowing long-running background work to be broken into persisted steps that can resume from the last saved checkpoint after a failure. The system ensures strict data consistency by allowing background tasks to be enqueued and completed within the same database transaction as the primary application data. It distinguishes itself through a coordinator model that employs leader election to manage periodic and delayed tasks

    Go
    View on GitHub↗5,252
  • inngest/inngestinngest avatar

    inngest/inngest

    5,499View on GitHub↗

    Inngest is a durable execution framework and event-driven automation engine designed to orchestrate background workflows. It enables developers to build resilient, stateful processes by memoizing function steps, ensuring that long-running tasks can automatically resume from the last successful operation after failures, timeouts, or infrastructure restarts. The platform distinguishes itself through its event-driven architecture, which uses a schema-validated bus to trigger functions and coordinate complex, multi-step logic. It employs an onion-model middleware approach for cross-cutting concer

    Go
    View on GitHub↗5,499
  • taskforcesh/bullmqtaskforcesh avatar

    taskforcesh/bullmq

    8,432View on GitHub↗

    BullMQ is a Redis-backed message queue library and background processor designed for distributed task queueing. It functions as a distributed queue manager and task scheduler, utilizing Redis to manage asynchronous job processing and persistence. The system distinguishes itself through its role as a job workflow orchestrator, enabling the definition of complex parent-child job dependencies and hierarchies for multi-step workflows. It provides sandboxed process execution to isolate heavy workloads and prevent event loop blocking, alongside distributed rate limiting to protect downstream servic

    TypeScriptbackground-jobselixirnodejs
    View on GitHub↗8,432
See all 30 alternatives to Oban→

Frequently asked questions

What does sorentwo/oban do?

Oban is a relational database-backed job processor and task scheduler for Elixir applications. It functions as a distributed workflow orchestrator that leverages database primitives to ensure job persistence, reliability, and consistent state management across clusters.

What are the main features of sorentwo/oban?

The main features of sorentwo/oban are: Background Job Processing, Relational Database Job Queues, Relational Database Processors, Background Task Schedulers, Lifecycle State Machines, Distributed Concurrency Controls, Concurrency Control, Distributed Workflow Orchestrators.

What are some open-source alternatives to sorentwo/oban?

Open-source alternatives to sorentwo/oban include: oban-bg/oban — Oban is a distributed background job processing system and task scheduler that uses PostgreSQL for transactional job… riverqueue/river — River is a transactional job queue and distributed job scheduler for Go that uses PostgreSQL for persistence and state… inngest/inngest — Inngest is a durable execution framework and event-driven automation engine designed to orchestrate background… taskforcesh/bullmq — BullMQ is a Redis-backed message queue library and background processor designed for distributed task queueing. It… jhuckaby/cronicle — Cronicle is a distributed job scheduler that replaces traditional cron with a browser-based management interface. It… sidekiq/sidekiq — Sidekiq is a background job processor and queue manager for Ruby that uses Redis to manage asynchronous tasks. It…