Que’s primary goal is reliability. You should be able to leave your application running indefinitely without worrying about jobs being lost due to a lack of transactional support, or left in limbo due to a crashing process. Que does everything it can to ensure that jobs you queue are performed exactly once (though the occasional repetition of a job can be impossible to avoid - see the docs on how to write a reliable job).

Que’s secondary goal is performance. The worker process is multithreaded, so that a single process can run many jobs simultaneously.

Source: que-rb/que: A Ruby job queue that uses PostgreSQL’s advisory locks for speed and reliability.


Not as advanced as Sidekiq, but good to know about.