Spec-Zone.ru › Ruby on Rails 6.1

module ActiveJob::QueueAdapters

Адаптеры Active Job

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

  • Backburner

  • Delayed Job

  • Que

  • queue_classic

  • Resque

  • Sidekiq

  • Sneakers

  • Sucker Punch

  • Active Job Async Job

  • Active Job Inline

  • Обратите внимание: мы не принимаем запросы на добавление новых адаптеров. См. README для получения дополнительной информации.

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

|                   | 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      |
| 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     |

Асинхронный

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

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

Очереди

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

Отложенные

Да: Адаптер запустит задачу в будущем через perform_later.

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

Нет: Адаптер будет запускать задачи при следующей возможности и не может использовать perform_later.

Н/Д: Адаптер не поддерживает очереди.

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

Приоритеты

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

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

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

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

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

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

Таймаут

Когда задача остановится после отведенного времени.

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

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

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

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

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

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

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

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

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

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

Н/Д: Адаптер не работает в отдельном процессе и, следовательно, не поддерживает повторные попытки.

Асинхронные и встроенные адаптеры очередей

Active Job имеет два встроенных адаптера очереди, предназначенных для разработки и тестирования: :async и :inline.

Открытые методы класса

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

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

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

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

Spec-Zone.ru

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