module ActiveJob::QueueAdapters
Адаптеры Active Job
Active Job имеет адаптеры для следующих бэкендов очередей:
-
Обратите внимание: мы не принимаем запросы на добавление новых адаптеров. См. 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.
Открытые методы класса
# 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.