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 engine that enables truly global concurrency, global rate limiting, queue partitioning, async execution tracking, true snooze counting, unique bulk inserts, and auto insert batching.

👷 Pro Worker

Extend the base worker with advanced options like execution hooks, typed and structured args, output recording, execution deadlines, encrypted args at rest, chained execution, and aliases.

🎨 Decorator

Build and insert jobs directly from regular functions.

📡 Relay

Insert jobs and await the results across any number of nodes, i.e. persistent distributed tasks.

🧪 Testing

Advanced helpers for testing supervised Oban instances, workers, and making assertions about enqueued jobs.

Composition

🗄️ Batch

Process related jobs while tracking overall progress across all nodes and executing optional callbacks.

🍪 Chunk

Process jobs atomically in groups based on size or timeout, with robust error handling semantics and optional partitioning.

🖇️ Workflow

Compose jobs together with arbitrary dependencies between them, allowing sequential, fan-out and fan-in execution.

Plugins

⏰ DynamicCron

Configure cron scheduling before boot or during runtime, globally, across an entire cluster with scheduling guarantees and timezone overrides. An ideal solution for applications that must dynamically start and manage scheduled tasks at runtime.

🛟 DynamicLifeline

Rescue orphaned jobs reliably, without the possibility of duplicate execution and the ability to retry jobs that have exhausted their attempts. In addition, it will rescue stuck workflows with deleted dependencies.

🗃️ DynamicPartitioner

Optimize query performance, minimize database bloat, and efficiently prune historic jobs by storing jobs in a managed partitioned table.

🥉 DynamicPrioritizer

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

✂️ DynamicPruner

Delete historic jobs on a flexible CRON schedule using configurable limits with per-queue, per-worker, and per-state overrides.

🎢 DynamicQueues

Configure queues at runtime, persist changes across restarts, and optionally limit queues to certain nodes—ideal for applications that dynamically start, stop, or modify queues at runtime.

⚖️ DynamicScaler

Horizontally auto-scale worker nodes up and down to optimize queue throughput during high traffic events, and pare back to zero or more nodes during a lull.