модуль 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 это будет учтено.
Да: позволяет установить приоритет объекта задачи, на уровне очереди или в качестве параметра по умолчанию конфигурации.
Нет: не позволяет настраивать приоритет задач.
Не применимо: адаптер не поддерживает очереди и, следовательно, их сортировку.
Таймаут
Время, в течение которого задача будет выполнена до остановки.
Задача: таймаут может быть установлен для каждого экземпляра класса задачи.
Очередь: таймаут устанавливается для всех задач в очереди.
Глобально: адаптер настроен так, что все задачи имеют максимальное время выполнения.
Не применимо: этот адаптер не выполняется в отдельном процессе, и поэтому таймаут не поддерживается.
Повторные попытки
Задача: количество повторных попыток может быть установлено для каждого экземпляра класса задачи.
Да: количество повторных попыток может быть настроено глобально, для каждого экземпляра или в очереди. Этот адаптер также может предоставить неудавшиеся экземпляры класса задач, которые можно перезапустить.
Глобально: адаптер имеет глобальное количество повторных попыток.
Не применимо: адаптер не выполняется в отдельном процессе, и поэтому не поддерживает повторные попытки.
Адаптеры очереди Async и Inline
Active Job имеет два встроенных адаптера очереди, предназначенные для разработки и тестирования: :async и :inline.
Методы публичного класса
# File activejob/lib/active_job/queue_adapters.rb, line 132 def lookup(name) const_get(name.to_s.camelize << ADAPTER) end
Возвращает адаптер для указанного имени.
ActiveJob::QueueAdapters.lookup(:sidekiq) # => ActiveJob::QueueAdapters::SidekiqAdapter
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.