A robust, database-backed job processing library for Elixir with PostgreSQL, MySQL, and SQLite3 support.
Oban is a robust background job processing library for Elixir that uses PostgreSQL, MySQL, or SQLite3 as its backend. It provides reliable, observable job execution with enterprise-grade features like unique jobs, scheduled jobs, and historic metrics retention. It solves the problem of managing asynchronous tasks in Elixir applications with strong consistency and minimal external dependencies.
Elixir developers building applications that require reliable background job processing, especially those already using PostgreSQL, MySQL, or SQLite3 as their primary database.
Developers choose Oban for its tight integration with SQL databases, which reduces system dependencies and simplifies backups. Its focus on reliability, observability, and retention of job data for metrics sets it apart from other job processing tools that delete jobs after completion.
💎 Robust job processing in Elixir, backed by modern PostgreSQL, SQLite3, and MySQL
Leverages existing SQL databases for job persistence, reducing external dependencies and simplifying backups, as highlighted in the 'Fewer Dependencies' advantage.
Enables atomic enqueuing of jobs alongside other database operations, ensuring data integrity and consistency, a key feature mentioned under 'Transactional Control'.
Jobs are retained indefinitely after processing for inspection and analytics, preventing data loss and providing deep observability, core to Oban's philosophy.
Prevents duplicate jobs with fine-grained uniqueness across arguments, queues, and workers, as described in the 'Unique Jobs' section.
Emits job life-cycle events via Telemetry for easy logging and monitoring, enhancing observability without additional plugins.
Ties the job queue to a SQL database, making it unsuitable for NoSQL-based applications or those preferring Redis for faster, in-memory processing.
Key enterprise features like workflows, batches, and global rate limiting are only available in Oban Pro, a paid extension, limiting the core library's capabilities.
Requires configuring database connections and Ecto migrations, which can be challenging for teams not already using Elixir's Ecto ecosystem.
Database-backed queueing can introduce latency compared to dedicated message brokers, especially under extreme concurrency, as noted in performance trade-offs.
Concurrent and multi-stage data ingestion and data processing with Elixir
Job processing library for Elixir - compatible with Resque / Sidekiq
A job processing system that just verks! 🧛
Job Queue for Elixir. Clustered or Local. Straight BEAM. Optional Ecto. 💪🍈
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.