Spec-Zone.ru › Ruby on Rails 8.1

модуль ActiveJob::QueueAdapters

Адаптеры Active Job

Active Job поддерживает адаптеры для следующих бэкендов очередей:

  • Backburner

  • Delayed Job

  • Que

  • queue_classic

  • Resque

  • Sidekiq

  • Обратите внимание: мы не принимаем запросы на добавление новых адаптеров. Подробнее см. в файле README.

Для тестирования и разработки в Active Job встроены три адаптера:

  • Асинхронный адаптер Active Job

  • Встроенный адаптер Active Job

  • Тестовый адаптер Active Job

Возможности бэкендов

|                   | Async | Queues | Delayed    | Priorities | Timeout | Retries |
|-------------------|-------|--------|------------|------------|---------|---------|
| Backburner        | Yes   | Yes    | Yes        | Yes        | Job     | Global  |
| Delayed Job       | Yes   | Yes    | Yes        | Job        | Global  | 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      |
| Active Job Async  | Yes   | Yes    | Yes        | No         | No      | No      |
| Active Job Inline | No    | Yes    | N/A        | N/A        | N/A     | N/A     |
| Active Job Test   | No    | Yes    | N/A        | N/A        | N/A     | N/A     |

Асинхронное выполнение

Да: адаптер очереди может выполнять задачу неблокирующим образом. Задача запускается в отдельном или дочернем процессе либо в другом потоке.

Нет: задача выполняется в том же процессе.

Очереди

Да: задачи могут указывать очередь, в которой они будут выполняться, с помощью queue_as или метода set.

Отложенное выполнение

Да: адаптер выполнит задачу в будущем с помощью perform_later.

(Gem): для использования perform_later с этим адаптером требуется дополнительный gem.

Нет: адаптер выполняет задачи при первой возможности и не поддерживает perform_later.

Н/Д: адаптер не поддерживает постановку задач в очередь.

ПРИМЕЧАНИЕ: queue_classic поддерживает планирование задач начиная с версии 3.1. Для более старых версий можно использовать gem queue_classic-later.

Приоритеты

Порядок обработки задач можно настраивать по-разному в зависимости от адаптера.

Задача: любой класс, наследующий адаптер, может задавать приоритет объекта задачи относительно других задач.

Очередь: адаптер может задавать приоритет очередей задач; при указании очереди с помощью Active Job этот приоритет будет учитываться.

Да: приоритет можно задать для объекта задачи, на уровне очереди или в качестве настройки по умолчанию.

Нет: адаптер не позволяет настраивать приоритет задач.

Н/Д: адаптер не поддерживает постановку задач в очередь и, следовательно, их сортировку.

Тайм-аут

Время, по истечении которого выполнение задачи прекращается.

Задача: тайм-аут можно задать для каждого экземпляра класса задачи.

Очередь: тайм-аут задаётся для всех задач в очереди.

Глобально: адаптер настроен так, чтобы у всех задач было максимальное время выполнения.

Нет: адаптер не позволяет настраивать тайм-аут задач.

Н/Д: этот адаптер не запускает задачи в отдельном процессе, поэтому тайм-аут не поддерживается.

Повторные попытки

Задача: количество повторных попыток можно задать для каждого экземпляра класса задачи.

Да: количество повторных попыток можно настроить глобально, для каждого экземпляра или для очереди. Кроме того, этот адаптер может отображать неудачные экземпляры класса задачи, которые можно перезапустить.

Глобально: адаптер задаёт глобальное количество повторных попыток.

Нет: адаптер не позволяет настраивать количество повторных попыток.

Н/Д: адаптер не запускает задачи в отдельном процессе и поэтому не поддерживает повторные попытки.

Публичные методы класса

lookup (name) Показать исходный код
# File activejob/lib/active_job/queue_adapters.rb, line 134
def lookup(name)
  const_get(name.to_s.camelize << ADAPTER)
end

Возвращает адаптер для указанного имени.

ActiveJob::QueueAdapters.lookup(:sidekiq)
# => ActiveJob::QueueAdapters::SidekiqAdapter

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API