модуль ActiveJob::QueueAdapters
Адаптеры Active Job
Active Job имеет адаптеры для следующих бэкендов очередей:
-
Примечание: Мы не принимаем запросы на добавление новых адаптеров. Подробности см. в README.
Для тестирования и разработки 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 этот приоритет будет учтён.
Да: Разрешает установку приоритета для объекта задания, на уровне очереди или в качестве параметра по умолчанию.
Нет: Адаптер не позволяет настраивать приоритет заданий.
Не применимо: Адаптер не поддерживает очереди, а следовательно, и сортировку.
Таймаут
Время, после которого задание будет остановлено.
Задание: Таймаут может быть установлен для каждого экземпляра класса задания.
Очередь: Таймаут устанавливается для всех заданий в очереди.
Глобально: Адаптер настроен так, что все задания имеют максимальное время выполнения.
Нет: Адаптер не позволяет настраивать таймаут заданий.
Не применимо: Этот адаптер не выполняется в отдельном процессе, поэтому таймаут не поддерживается.
Повторные попытки
Задание: Количество попыток может быть установлено для каждого экземпляра класса задания.
Да: Количество повторных попыток может быть настроено глобально, для каждого экземпляра или в очереди. Этот адаптер также может представлять собой экземпляры заданий, которые потерпели неудачу, и которые можно перезапустить.
Глобально: Адаптер имеет глобальное количество повторных попыток.
Нет: Адаптер не позволяет настраивать количество повторных попыток.
Не применимо: Адаптер не выполняется в отдельном процессе, и поэтому не поддерживает повторные попытки.
Публичные методы класса
# File activejob/lib/active_job/queue_adapters.rb, line 135 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.