SolidQueue vs Sidekiq

When discussing background job processing in the Ruby on Rails ecosystem, Sidekiq has been the de facto solution for over a decade. Its performance, community support, and reliability made it the go-to option.

But with the introduction of SolidQueue in Rails 8, developers now have a fully-native alternative that doesn’t require Redis or third-party systems.

Each system has its strengths, and the right choice depends on your project’s complexity, scale, and preferences.

Let’s explore how these two systems compare in detail.


1. Architecture and Infrastructure Requirements

Feature SolidQueue Sidekiq
Dependency SQL Database (PostgreSQL, MySQL, SQLite) Redis
Worker Implementation Rails Worker (Active Job + DB polling) Threaded Ruby daemon (uses Redis polling)
Concurrency Handling DB-level FOR UPDATE SKIP LOCKED In-memory Redis list + threads
Horizontal Scaling Supported (via shared DB) Supported (via shared Redis)
Background Job Adapter Native Active Job backend Custom job processor (uses Active Job optionally)

SolidQueue leverages your existing SQL database, meaning fewer moving parts in your infrastructure.

Sidekiq, on the other hand, requires Redis to manage job queues and state. Redis is fast, but it's an additional service to deploy, secure, and monitor.


2. Performance and Scalability

Sidekiq’s Redis-backed architecture makes it blazingly fast. It supports millions of jobs per day, handles thousands of concurrent threads, and has an optimized event loop. For large-scale systems with high job throughput and complex scheduling needs, Sidekiq remains unmatched.

SolidQueue is no slouch either. It supports concurrent job processing, bulk enqueueing, job priorities, and scheduled jobs. It uses the efficient FOR UPDATE SKIP LOCKED mechanism to safely distribute jobs among workers. However, since it writes to and polls from a relational database, it may hit bottlenecks sooner than Redis at extremely high volumes.

Use case alignment:


3. Feature Set Comparison

Feature SolidQueue Sidekiq (Open Source)
Delayed Jobs
Job Retries ✅ (via Active Job)
Error Handling ✅ (Active Job)
Concurrency Controls
Cron/Recurring Jobs ✅ (built-in) ❌ (Pro feature)
Priorities Limited
Bulk Job Enqueueing ✅ (perform_all_later)
Monitoring Dashboard ❌ (DIY) ✅ (Web UI)
Rate Limiting ❌ (Pro feature available)

SolidQueue is packed with essential features and includes built-in support for recurring jobs, job priorities, and queue pausing. Sidekiq’s open-source version has many features but reserves advanced capabilities like scheduling, rate limiting, and job batching for its paid editions.

If you need a visual dashboard, Sidekiq wins hands down. SolidQueue doesn't ship with a UI—yet. Monitoring in SolidQueue is mostly manual (via queries or custom UIs) OR by using 3rd party gems such as a) https://github.com/rails/mission_control-jobs b) https://github.com/virolea/panoptic.


4. Developer Experience

SolidQueue wins points for simplicity and convention. It’s tightly integrated with Active Job and doesn’t require learning a new DSL or configuring Redis queues.

#SolidQueue Job (Active Job)
class InvoiceJob < ApplicationJob
  queue_as :invoices

  def perform(invoice_id)
    Invoice.find(invoice_id).send_email
  end
end

Sidekiq, by contrast, gives you more control but also more responsibility:

#Sidekiq Job
class InvoiceJob
  include Sidekiq::Job
  sidekiq_options queue: :invoices, retry: 3

  def perform(invoice_id)
    Invoice.find(invoice_id).send_email
  end
end

In practice:


5. Deployment and Operations

SolidQueue reduces operational complexity:

Sidekiq, while fast, adds Redis as a critical infrastructure dependency. You’ll need monitoring, backups, and failover strategies for it.


Summary: When to Use What?

Scenario Best Fit
Small to medium Rails apps SolidQueue
Teams that want zero external dependencies SolidQueue
High-performance API servers Sidekiq
Jobs that must run immediately (e.g. <10ms latency) Sidekiq
Need for visual dashboards and advanced scheduling Sidekiq Pro/Enterprise
Want to keep everything inside Rails conventions SolidQueue

Ultimately, the choice between SolidQueue and Sidekiq depends on your scale, team preferences, and infrastructure complexity tolerance.

SolidQueue is a fantastic option for most Rails apps today, and it's only going to get better as it matures.