A multithreaded, Postgres-based Active Job backend for Ruby on Rails, designed for simplicity and performance.
GoodJob is a multithreaded, Postgres-based backend for Ruby on Rails' Active Job framework. It provides a reliable and performant job queue that handles background tasks like email sending, data processing, and scheduled jobs, leveraging PostgreSQL for data integrity and scalability. It solves the need for a simple, Rails-native job processing system without external dependencies like Redis.
Ruby on Rails developers and teams needing a robust, database-backed job queue for background processing, especially those already using PostgreSQL and preferring to avoid additional infrastructure like Redis.
Developers choose GoodJob for its deep integration with Rails and PostgreSQL, offering ACID compliance, advisory locks for job safety, and a built-in web dashboard. It’s a lightweight alternative to Redis-based solutions, reducing operational complexity while supporting high-volume workloads.
Multithreaded, Postgres-based, Active Job backend for Ruby on Rails.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers full Active Job compatibility with async execution, queues, delays, and retries, requiring near-zero configuration as highlighted in the README's 'Designed for Active Job' section.
Leverages PostgreSQL's ACID compliance and advisory locks for run-once safety, ensuring jobs are processed exactly once without data loss, as detailed in the 'Backed by Postgres' philosophy.
Includes a mountable Rails engine dashboard for real-time job monitoring and management, which is showcased in the README with a demo link and configuration options.
Supports running jobs within web processes (async) or as standalone CLI (external), allowing scalability from development to production without additional infrastructure.
Tightly coupled to PostgreSQL, making it incompatible with other databases like MySQL or SQLite, which restricts its use in heterogeneous database environments.
Setting up concurrency controls, cron scheduling, and batches involves detailed configuration and understanding of options, which can be overwhelming for simple use cases despite the README's extensive documentation.
Relies on polling with a default interval of 10 seconds in production, which can delay job execution compared to in-memory queues like Redis, though LISTEN/NOTIFY mitigates this but adds database load.
good_job is an open-source alternative to the following products:
Sidekiq is a background job processing framework for Ruby applications, using Redis to queue and execute jobs asynchronously.
Que is a job queueing system for Ruby applications that uses PostgreSQL's advisory locks for reliability and supports multiple job priorities and concurrency.
Delayed Job is a database-backed asynchronous job queue system for Ruby on Rails applications, allowing background processing of long-running tasks.