# oban-bg/oban

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/oban-bg-oban).**

3,812 stars · 359 forks · Elixir · apache-2.0

## Links

- GitHub: https://github.com/oban-bg/oban
- Homepage: https://oban.pro
- awesome-repositories: https://awesome-repositories.com/repository/oban-bg-oban.md

## Description

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 processing, and the ability to synchronize distributed tasks and receive results across a cluster.

The platform covers broad capability areas including global rate limit management, cron-based recurring task scheduling, and job queue administration. It also incorporates traffic management via queue partitioning and uniqueness enforcement, alongside monitoring tools for tracking execution metrics and recovering orphaned jobs.

## Tags

### DevOps & Infrastructure

- [Background Job Queues](https://awesome-repositories.com/f/devops-infrastructure/background-job-queues.md) — Provides a distributed background job queue using PostgreSQL for transactional storage and reliable task execution.
- [Background Job Processing](https://awesome-repositories.com/f/devops-infrastructure/background-job-processing.md) — Provides a distributed system for scheduling and executing asynchronous tasks using a SQL database.
- [Concurrency Control](https://awesome-repositories.com/f/devops-infrastructure/background-job-queues/concurrency-control.md) — Provides mechanisms to limit parallel job execution through isolated queues. ([source](https://cdn.jsdelivr.net/gh/oban-bg/oban@main/README.md))
- [Distributed Job Execution](https://awesome-repositories.com/f/devops-infrastructure/distributed-job-execution.md) — Distributes background tasks across multiple cluster nodes and tracks completion results. ([source](https://oban.pro/))
- [Distributed Recurring Task Scheduling](https://awesome-repositories.com/f/devops-infrastructure/distributed-recurring-task-scheduling.md) — Manages cron-like jobs that run on a set schedule across multiple nodes without triggering duplicate executions.
- [Distributed Task Schedulers](https://awesome-repositories.com/f/devops-infrastructure/distributed-task-schedulers.md) — Provides a cluster-aware scheduler for managing asynchronous tasks, cron jobs, and complex workflow dependencies.
- [Execution Rate Limiters](https://awesome-repositories.com/f/devops-infrastructure/execution-rate-limiters.md) — Enforces global concurrency and rate limits across a cluster to prevent system overload. ([source](https://oban.pro/))
- [Job Dependency Coordination](https://awesome-repositories.com/f/devops-infrastructure/job-scheduling/job-dependency-coordination.md) — Manages complex asynchronous workflows through parent-child job hierarchies and shared context. ([source](https://cdn.jsdelivr.net/gh/oban-bg/oban@main/README.md))
- [Transactional Enqueueing](https://awesome-repositories.com/f/devops-infrastructure/job-scheduling/transactional-enqueueing.md) — Wraps job enqueueing within database transactions to ensure tasks are only scheduled if the parent business logic succeeds.
- [Distributed Rate Limiting](https://awesome-repositories.com/f/devops-infrastructure/rate-limiters/distributed-rate-limiting.md) — Synchronizes request and task limits across a distributed cluster to prevent downstream system overload.
- [Job Priority Management](https://awesome-repositories.com/f/devops-infrastructure/job-priority-management.md) — Provides logic to adjust job priority over time to prevent task starvation. ([source](https://oban.pro/docs/pro))
- [Job Deduplication](https://awesome-repositories.com/f/devops-infrastructure/job-queues/job-deduplication.md) — Prevents duplicate background tasks from being enqueued based on arguments or queues. ([source](https://cdn.jsdelivr.net/gh/oban-bg/oban@main/README.md))
- [Job Progress Grouping](https://awesome-repositories.com/f/devops-infrastructure/job-scheduling/group-execution-control/job-progress-grouping.md) — Tracks collective progress of job sets and triggers callbacks when individual jobs or entire groups complete. ([source](https://oban.pro/docs/pro))
- [Job Cancellation](https://awesome-repositories.com/f/devops-infrastructure/job-scheduling/job-cancellation.md) — Provides the capability to stop active jobs mid-execution across any node in the cluster. ([source](https://cdn.jsdelivr.net/gh/oban-bg/oban@main/README.md))
- [Stalled Job Recovery](https://awesome-repositories.com/f/devops-infrastructure/job-scheduling/stalled-job-recovery.md) — Identifies and rescues orphaned jobs or those that stalled due to worker crashes. ([source](https://oban.pro/docs/pro))
- [Worker Scaling](https://awesome-repositories.com/f/devops-infrastructure/worker-scaling.md) — Adjusts the number of active worker nodes based on real-time queue depth to handle traffic fluctuations. ([source](https://oban.pro/docs/pro))

### Software Engineering & Architecture

- [Database-Backed Deferred Queues](https://awesome-repositories.com/f/software-engineering-architecture/database-backed-deferred-queues.md) — Provides a persistent background job queue utilizing PostgreSQL to ensure transactional guarantees and reliable delivery.
- [Database-Backed Workers](https://awesome-repositories.com/f/software-engineering-architecture/background-worker-orchestration/database-backed-workers.md) — Implements a worker system that leverages PostgreSQL to coordinate job concurrency and rate limiting across nodes.
- [Distributed Cluster Coordination](https://awesome-repositories.com/f/software-engineering-architecture/distributed-cluster-coordination.md) — Synchronizes job state and scheduling across cluster nodes using a shared PostgreSQL database as the source of truth.
- [Job Continuation Chaining](https://awesome-repositories.com/f/software-engineering-architecture/job-continuation-chaining.md) — Implements mechanisms for linking dependent asynchronous tasks where child jobs trigger upon parent success. ([source](https://oban.pro/))
- [Partitioned](https://awesome-repositories.com/f/software-engineering-architecture/queues/partitioned.md) — Ships the ability to split queues into isolated partitions with independent concurrency limits. ([source](https://oban.pro/))
- [Global Job Concurrency Limits](https://awesome-repositories.com/f/software-engineering-architecture/traffic-management/concurrent-request-limits/global-job-concurrency-limits.md) — Implements cluster-wide concurrency limits to prevent downstream system overload. ([source](https://oban.pro/docs/pro))
- [Synchronous Result Retrieval](https://awesome-repositories.com/f/software-engineering-architecture/load-balancing-architectures/clustered-task-distribution/synchronous-result-retrieval.md) — Inserts jobs from any node and receives results synchronously via automatic forwarding across the cluster. ([source](https://oban.pro/docs/pro))

### Artificial Intelligence & ML

- [Hierarchical Workflows](https://awesome-repositories.com/f/artificial-intelligence-ml/workflow-as-a-tool-exposure/durable-multi-step-orchestrators/hierarchical-workflows.md) — Coordinates complex sequences of distributed jobs with cumulative context and hierarchical sub-workflows. ([source](https://oban.pro/))

### Data & Databases

- [Database Job Lifecycle Management](https://awesome-repositories.com/f/data-databases/persistent-application-state/job-state-persistence/database-job-lifecycle-management.md) — Allows enabling, disabling, retrying, or cancelling jobs directly through database operations without code deployment. ([source](https://oban.pro/))
- [Workflow Scheduling And Orchestration](https://awesome-repositories.com/f/data-databases/workflow-scheduling-and-orchestration.md) — Provides a distributed framework for managing complex multi-step job pipelines and data process orchestration.
- [Chunked Execution](https://awesome-repositories.com/f/data-databases/batch-processing/job-recovery-mechanisms/chunked-execution.md) — Allows executing jobs atomically in groups based on size or timeouts with granular error handling. ([source](https://oban.pro/docs/pro))

### Development Tools & Productivity

- [Background Task Schedulers](https://awesome-repositories.com/f/development-tools-productivity/background-task-schedulers.md) — Inserts tasks into a SQL database for asynchronous execution with transactional reliability guarantees. ([source](https://cdn.jsdelivr.net/gh/oban-bg/oban@main/README.md))
- [Workflow Orchestration](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-automation-systems/workflow-orchestration.md) — Coordinates complex sequences of dependent background jobs that share context and execute in a specific order.
- [Cron Scheduling](https://awesome-repositories.com/f/development-tools-productivity/cron-scheduling.md) — Implements a distributed cron-like timer for triggering recurring background jobs across a cluster.
- [Job Schedulers](https://awesome-repositories.com/f/development-tools-productivity/job-schedulers.md) — Automates recurring tasks on a cron-like schedule across multiple nodes while preventing duplicate insertions. ([source](https://cdn.jsdelivr.net/gh/oban-bg/oban@main/README.md))
- [Schedule Management](https://awesome-repositories.com/f/development-tools-productivity/job-schedulers/schedule-management.md) — Provides the capability to modify scheduled jobs, timezones, and parameters at runtime across the cluster. ([source](https://oban.pro/docs/pro))
- [Distributed Concurrency Controls](https://awesome-repositories.com/f/development-tools-productivity/task-concurrency-control/distributed-concurrency-controls.md) — Limits total job execution rates across all nodes using a shared distributed quota system.
- [Runtime Queue Management](https://awesome-repositories.com/f/development-tools-productivity/dynamic-configuration/runtime-queue-management.md) — Allows starting, stopping, pausing, or reconfiguring queues dynamically with settings that persist across restarts. ([source](https://oban.pro/docs/pro))

### Programming Languages & Runtimes

- [Job Batching](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/background-task-management/job-batching.md) — Groups multiple background tasks together to track collective progress and trigger callbacks upon completion. ([source](https://cdn.jsdelivr.net/gh/oban-bg/oban@main/README.md))

### Security & Cryptography

- [Programmatic Quota Reservations](https://awesome-repositories.com/f/security-cryptography/request-size-limiters/request-limiters/request-throttling/client-request-quotas/api-rate-limit-management/programmatic-quota-reservations.md) — Allows programmatic checking and reservation of capacity to manage background task volume. ([source](https://oban.pro/docs/pro))

### System Administration & Monitoring

- [Background Job Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/background-job-monitoring.md) — Tracks throughput, queue depth, and execution time through built-in instrumentation and metrics. ([source](https://oban.pro/))
- [Historical Job Analytics](https://awesome-repositories.com/f/system-administration-monitoring/background-job-monitoring/historical-job-analytics.md) — Retains processed job data in the database for historic analytics and health monitoring. ([source](https://cdn.jsdelivr.net/gh/oban-bg/oban@main/README.md))
- [Queue Administration Interfaces](https://awesome-repositories.com/f/system-administration-monitoring/background-job-queues/queue-administration-interfaces.md) — Provides tools for pausing queues, adjusting priorities, and pruning tasks at runtime.
