Skip to content
Nathan Esquenazi edited this page Jun 29, 2013 · 5 revisions

How does backburner compare to resque or delayed_job or sidekiq?

All of these libraries share a similar goal with Backburner which is reliable asynchronous message processing, yet they all tackle the solution differently:

  1. delayed_job uses your SQL database for storage and processes messages in a single-threaded process. It's simple to set up but the performance and scalability aren't great because databases are not well-suited as work queues.
  2. resque uses redis for storage and processes messages in a single-threaded process. The redis requirement makes it a little more difficult to set up, compared to delayed_job, but redis is far better as a queue than a SQL database. Being single-threaded means that processing 20 messages in parallel requires 20 processes, which can take a lot of memory.
  3. sidekiq uses redis for storage and processes messages in a multi-threaded process. It's just as easy to set up as resque but more efficient in terms of raw processing speed. Your worker code does need to be thread-safe.
  4. backburner uses beanstalkd for efficient and reliable message processing. backburner has support for multiple worker processing strategies including a threaded (like sidekiq) or forking (like resque). It's incredibly easy to setup and benefits from using beanstalkd which is a better work queue than redis or SQL.
Clone this wiki locally