модуль 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 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.