A database-backed asynchronous priority queue system for Ruby on Rails, extracted from Shopify.
Delayed::Job is a Ruby gem that provides a database-backed asynchronous priority queue system for background job processing. It allows developers to offload long-running tasks like sending newsletters, image resizing, and batch imports from the main application flow, ensuring better performance and scalability. Originally extracted from Shopify, it handles core asynchronous tasks reliably.
Ruby on Rails developers who need a simple, persistent background job solution without external dependencies like Redis. It's ideal for teams already using ActiveRecord or Mongoid who want to manage async tasks within their existing database infrastructure.
Developers choose Delayed::Job for its simplicity and tight integration with Rails ecosystems—it uses the application's database as the queue, avoiding extra services. Its extraction from Shopify ensures battle-tested reliability for high-volume background processing with flexible prioritization and queue management.
Database based asynchronous priority queue system -- Extracted from Shopify
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages your existing ActiveRecord or Mongoid database as the queue, eliminating external dependencies like Redis and reducing infrastructure complexity, as highlighted in the README's philosophy section.
Serves as a backend for Rails 4.2+ Active Job, providing a standardized interface that simplifies switching between job processors and future-proofing your codebase.
Supports delayed execution with run_at timers and configurable retry logic with exponential backoff, allowing precise control over job timing and failure handling, as detailed in the Queuing Jobs section.
Originally extracted from Shopify and used for core tasks like sending newsletters and image resizing, ensuring robustness in production environments, as noted in the introduction.
Relies on database polling every 5 seconds by default, which can become inefficient at scale, causing higher latency and increased database load compared to in-memory queues like Redis.
Lacks built-in support for job dependencies, complex workflows, or real-time monitoring, and custom hooks are not available with Active Job integration, as admitted in the Hooks section.
Requires running separate worker processes (via script/delayed_job or rake tasks), adding deployment and monitoring overhead compared to more integrated solutions.