Overview

🌟 Oban Pro is a collection of extensions, compositors, and plugins that expand what Oban is capable of while making complex workflows possible.

Get started with installation, learn how to transition from OSS to Pro with adoption, and then explore the full range of Pro features below.

Extensions

Smart Engine

An advanced engine with global concurrency, rate limiting with multiple algorithms, queue partitioning, async execution tracking, unique bulk inserts, and auto insert batching.

Pro Worker

Extend the base worker with execution hooks, structured and encrypted args, output recording, execution deadlines, variable rate limit weights, chained execution, and more.

Rate Limit

Programmatic API for interacting with rate limits outside of job execution. Check available capacity, manually consume quota, or atomically reserve capacity before performing operations.

Decorator

Define jobs inline using module attributes, turning regular functions into background jobs without writing separate worker modules.

Relay

Insert jobs and await results synchronously from any node, i.e. persistent distributed tasks with automatic result forwarding across the cluster.

Testing

Advanced helpers for integration testing with supervised Oban instances, running workflows synchronously, and making assertions about enqueued jobs.

Composition

Batch

Group related jobs and track overall progress across all nodes, with callbacks when jobs complete, are discarded, or the entire batch finishes.

Chunk

Process jobs atomically in groups based on size or a timeout, with granular error handling (cancel, discard, snooze individual jobs) and optional partitioning.

Workflow

Compose jobs with arbitrary dependencies for sequential, fan-out, and fan-in execution. Supports sub-workflows, cascading functions, context sharing, uniqueness constraints, and database-backed tracking.

Plugins

DynamicCron

Manage cron jobs at runtime with cluster-wide coordination, timezone support, and scheduling guarantees. Insert, update, or delete scheduled jobs without redeploying.

DynamicLifeline

Rescue orphaned jobs without duplicate execution, retry jobs that exhausted attempts, and unstick workflows with missing dependencies.

DynamicPrioritizer

Automatically adjust job priorities over time to prevent starvation and ensure all jobs are eventually processed.

DynamicPruner

Delete completed jobs on a cron schedule with per-queue, per-worker, and per-state overrides for fine-grained retention policies.

DynamicQueues

Start, stop, pause, and configure queues at runtime with changes persisted across restarts. Optionally limit queues to specific nodes.

DynamicScaler

Auto-scale worker nodes horizontally based on queue depth—scale up during high traffic and back down during lulls.