Active Job adapters

Active Job has adapters for the following queueing backends:

Backends Features

|                   | Async | Queues | Delayed    | Priorities | Timeout | Retries |
| Backburner        | Yes   | Yes    | Yes        | Yes        | Job     | Global  |
| Delayed Job       | Yes   | Yes    | Yes        | Job        | Global  | Global  |
| Qu                | Yes   | Yes    | No         | No         | No      | Global  |
| Que               | Yes   | Yes    | Yes        | Job        | No      | Job     |
| queue_classic     | Yes   | Yes    | Yes*       | No         | No      | No      |
| Resque            | Yes   | Yes    | Yes (Gem)  | Queue      | Global  | Yes     |
| Sidekiq           | Yes   | Yes    | Yes        | Queue      | No      | Job     |
| Sneakers          | Yes   | Yes    | No         | Queue      | Queue   | No      |
| Sucker Punch      | Yes   | Yes    | Yes        | No         | No      | No      |
| Active Job Async  | Yes   | Yes    | Yes        | No         | No      | No      |
| Active Job Inline | No    | Yes    | N/A        | N/A        | N/A     | N/A     |


Yes: The Queue Adapter has the ability to run the job in a non-blocking manner. It either runs on a separate or forked process, or on a different thread.

No: The job is run in the same process.


Yes: Jobs may set which queue they are run in with queue_as or by using the set method.


Yes: The adapter will run the job in the future through perform_later.

(Gem): An additional gem is required to use perform_later with this adapter.

No: The adapter will run jobs at the next opportunity and cannot use perform_later.

N/A: The adapter does not support queueing.

NOTE: queue_classic supports job scheduling since version 3.1. For older versions you can use the queue_classic-later gem.


The order in which jobs are processed can be configured differently depending on the adapter.

Job: Any class inheriting from the adapter may set the priority on the job object relative to other jobs.

Queue: The adapter can set the priority for job queues, when setting a queue with Active Job this will be respected.

Yes: Allows the priority to be set on the job object, at the queue level or as default configuration option.

No: Does not allow the priority of jobs to be configured.

N/A: The adapter does not support queueing, and therefore sorting them.


When a job will stop after the allotted time.

Job: The timeout can be set for each instance of the job class.

Queue: The timeout is set for all jobs on the queue.

Global: The adapter is configured that all jobs have a maximum run time.

N/A: This adapter does not run in a separate process, and therefore timeout is unsupported.


Job: The number of retries can be set per instance of the job class.

Yes: The Number of retries can be configured globally, for each instance or on the queue. This adapter may also present failed instances of the job class that can be restarted.

Global: The adapter has a global number of retries.

N/A: The adapter does not run in a separate process, and therefore doesn't support retries.

Async and Inline Queue Adapters

Active Job has two built-in queue adapters intended for development and testing: :async and :inline.

ADAPTER = 'Adapter'.freeze
Class Public methods

Returns adapter for specified name.

# => ActiveJob::QueueAdapters::SidekiqAdapter
# File activejob/lib/active_job/queue_adapters.rb, line 132
def lookup(name)
  const_get(name.to_s.camelize << ADAPTER)