good_job VS Delayed::Job

Compare good_job vs Delayed::Job and see what are their differences.

Delayed::Job

Database based asynchronous priority queue system -- Extracted from Shopify (by collectiveidea)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
good_job Delayed::Job
36 10
2,446 4,802
- 0.1%
9.3 2.1
3 days ago 2 months ago
Ruby Ruby
MIT License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

good_job

Posts with mentions or reviews of good_job. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-21.
  • solid_queue alternatives - Sidekiq and good_job
    3 projects | 21 Apr 2024
    This is the most direct competitor of good_job in my opinion.
  • Tuning Rails application structure
    2 projects | dev.to | 15 Feb 2024
    Once we are done with default gems, should we look into something we usually use? That's jwt because we need session tokens for our API. Next comes our one and only sidekiq. For a long period of time it was the best in town solution for background jobs. Now we could also consider solid_queue or good_job. In development and testing groups we need rspec-rails, factory_bot_rails and ffaker. Dealing with money? Start doing it properly from the beginning! Do not forget to install money-rails. Once everything is added to the Gemfile do not forget to trigger bundle install.
  • Postgres as Queue
    8 projects | news.ycombinator.com | 9 Feb 2024
    In the world of Ruby, GoodJob [0] has been doing a _good job_ so far.

    [0] - https://github.com/bensheldon/good_job

  • Choose Postgres Queue Technology
    17 projects | news.ycombinator.com | 24 Sep 2023
    For Rails apps, you can do this using the ActiveJob interface via

    https://github.com/bensheldon/good_job

    Had it in production for about a quarter and it’s worked well.

  • Pg_later: Asynchronous Queries for Postgres
    4 projects | news.ycombinator.com | 18 Aug 2023
    Idk about pgagent but any table is a resilient queue with the multiple locks available in pg along with some SELECT pg_advisory_lock or SELECT FOR UPDATE queries, and/or LISTEN/NOTIFY.

    Several bg job libs are built around native locking functionality

    > Relies upon Postgres integrity, session-level Advisory Locks to provide run-once safety and stay within the limits of schema.rb, and LISTEN/NOTIFY to reduce queuing latency.

    https://github.com/bensheldon/good_job

    > |> lock("FOR UPDATE SKIP LOCKED")

    https://github.com/sorentwo/oban/blob/8acfe4dcfb3e55bbf233aa...

  • Noticed Gem and ActionCable
    1 project | /r/rails | 23 Jun 2023
    The suggestion from /u/tofus is a good one. If you are already using redis as your ActionCable adapter I would use sidekiq. If not and you're using postgres I would consider https://github.com/bensheldon/good_job
  • Introducing tobox: a transactional outbox framework
    2 projects | /r/ruby | 29 Apr 2023
    Probably worth mentioning that aside from delayed_job there are at least two more modern alternatives backed by the DB: Que and good_job.
  • Sidekiq jobs in ActiveRecord transactions
    2 projects | /r/rails | 27 Apr 2023
    Good article. Sidekiq is a good, well respected too. However if you are starting out I would recommend not using it, and instead choosing a DB based queue system. We have great success with que, but there are others like good_job.
  • Mike Perham of Sidekiq: “If you build something valuable, charge money for it.”
    6 projects | news.ycombinator.com | 14 Apr 2023
    Sidekiq Pro is great, we're paying for it! 10k a year I think.

    But for people who are interested in alternatives, I'd also suggest Good Job (runs on Postgresql).

    https://github.com/bensheldon/good_job

  • SQL Maxis: Why We Ditched RabbitMQ and Replaced It with a Postgres Queue
    16 projects | news.ycombinator.com | 11 Apr 2023
    I'm the GoodJob author. Here's the class that is responsible for implementing Postgres's LISTEN/NOTIFY functionality in GoodJob:

    https://github.com/bensheldon/good_job/blob/10e9d9b714a668dc...

    That's heavily inspired by Rail's Action Cable (websockets) Adapter for Postgres, which is a bit simpler and easier to understand:

    https://github.com/rails/rails/blob/be287ac0d5000e667510faba...

    Briefly, it spins up a background thread with a dedicated database connection and doings a blocking Postgres LISTEN query returns results, and then it forwards the result to other subscribing objects.

Delayed::Job

Posts with mentions or reviews of Delayed::Job. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-04-18.
  • How to narrow down race condition in delayed job/mysql2?
    1 project | /r/rails | 31 Jan 2023
    I included this in the github issue but we had coverband induced log spam, it got fixed and suddenly we hit the bug. I did find this from someone with a similar issue but there was no conclusion.
  • How to run a really long task from a Rails web request
    3 projects | dev.to | 18 Apr 2022
    So how do we trigger such a long-running process from a Rails request? The first option that comes to mind is a background job run by some of the queuing back-ends such as Sidekiq, Resque or DelayedJob, possibly governed by ActiveJob. While this would surely work, the problem with all these solutions is that they usually have a limited number of workers available on the server and we didn’t want to potentially block other important background tasks for so long.
  • Delayed Job vs. Sidekiq: Which Is Better?
    5 projects | dev.to | 8 Mar 2022
    Several gems support job queues and background processing in the Rails world — Delayed Job and Sidekiq being the two most popular ones.
    13 projects | news.ycombinator.com | 16 Feb 2022
    Rails 7 support only just got added https://github.com/collectiveidea/delayed_job/pull/1161
  • Why does rails have a tradition of queuing background jobs in a separate NoSQL store, when both the queueing controller and the job class tend to hammer the main database anyway?
    3 projects | /r/rails | 28 Dec 2021
    Back in the day, before Sidekiq and such, we used Delayed Job https://github.com/collectiveidea/delayed_job
  • A quick look at background jobs in Ruby
    1 project | dev.to | 11 Mar 2021
    There are a few of popular systems. A few need a database, such as Delayed::Job, while others prefer Redis, such as Resque and Sidekiq.
  • Schedule background jobs in Rails with Integromat
    2 projects | /r/rails | 14 Feb 2021
    I always wad a fan of Sidekiq, but recently I wanted to remove redis as a dependency. I ended up going back to classic delayed_job. My reason for that was I also didn't want dependency with Postgres, as I like to use sqlite on development and Postgres on production. The best solution I've seen is Que, which works with Postgres. It is complete, has all the features you need.
  • Background Job Processing in Ruby without external libraries and dependencies
    1 project | dev.to | 1 Jan 2021
    Ruby gets hammered a lot for its green threads and no real concurrency yet Ruby libraries such as Resque, Delayed Job and Sidekiq are some of the most popular choices to run background jobs in the industry. When you have a huge project and millions of requests and hundreds of thousands of operations to perform, reach out to one of these solutions which are feature complete and you don’t have to reinvent the wheel as its complex piece of software to implement and requires thousands of human hours. While they help you scale sometimes they are not what you are looking for or need as they are meant for a scale of 10000s of jobs per second and what you need is a background processing for few jobs that can be handled in memory without a dependency of a queue such as Redis. If you look at the benchmark numbers from Sidekiq they are for 100K jobs because that is the scale it is meant to be though one can use it for running a few hundred complex jobs as well where you require queue management and supervision.
  • Digital Ocean App Platform vs Heroku
    2 projects | dev.to | 24 Dec 2020
    Before we dive in, I wanted to go over my background real quick for context. I'm mostly a Rails developer professionally, and I am on the 'Infrastructure' team at work, so I integrate closely with Heroku and am pretty familiar with their product and offerings. Given my Rails background, this article will focus on deploying a web app with at least one background job process. For my hackathon app, I had a web process running Puma and a worker process running DelayedJob.

What are some alternatives?

When comparing good_job and Delayed::Job you can also consider the following projects:

Sidekiq - Simple, efficient background processing for Ruby

sidekiq-throttled - Concurrency and rate-limit throttling for Sidekiq

Sucker Punch - Sucker Punch is a Ruby asynchronous processing library using concurrent-ruby, heavily influenced by Sidekiq and girl_friday.

Que - A Ruby job queue that uses PostgreSQL's advisory locks for speed and reliability.

Resque - Resque is a Redis-backed Ruby library for creating background jobs, placing them on multiple queues, and processing them later.

Shoryuken - A super efficient Amazon SQS thread based message processor for Ruby

Sidekiq::Undertaker - Sidekiq::Undertaker allows exploring, reviving or burying dead jobs.

Sneakers - A fast background processing framework for Ruby and RabbitMQ

sidekiq_alive - Liveness probe for Sidekiq in Kubernetes deployments

Karafka - Ruby and Rails efficient multithreaded Kafka processing framework