跳到內容 跳到搜尋

Active Job 介接器

Active Job 針對以下佇列後端提供介接器

針對測試和開發,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 在未來執行作業。

(寶石):此介接器需要額外的寶石才能與 perform_later 搭配使用。

否:介接器會在下次機會時執行作業,而且無法使用 perform_later。

不適用:介接器不支援佇列。

注意:queue_classic 從版本 3.1 開始支援作業排程。針對較舊的版本,您可以使用 queue_classic-later 寶石。

優先權

作業處理的順序可以依據介接器而有不同的設定。

作業:任何繼承自介接器的類別都可以在作業物件上設定相對於其他作業的優先權。

佇列:介接器可以設定作業佇列的優先順序,在使用 Active Job 設定佇列時,會遵循這項設定。

是:允許在作業物件、佇列層級或作為預設設定選項設定優先順序。

否:介接器不允許設定作業的優先順序。

不適用:介接器不支援佇列,因此無法加以分類。

逾時

指定作業將在分配時間過後停止。

作業:可以針對個別作業類別的執行個體設定逾時時間。

佇列:為佇列中的所有作業設定逾時時間。

全域:設定介接器以讓所有作業都有最大的執行時間。

否:介接器不允許設定作業的逾時時間。

不適用:此介接器不會在個別處理程序中執行,因此不支援逾時。

重試

作業:每個作業類別的執行個體都可以設定重試次數。

是:可以在全域設定重試次數,也可針對個別執行個體或佇列設定。此介接器也可能會顯示可以重新啟動的作業類別的執行個體。

全域:介接器有全域性的重試次數。

否:介接器不允許設定重試次數。

不適用:此介接器不會在個別處理程序中執行,因此不支援重試。

命名空間
方法
L

類別公用方法

lookup(name)

傳回指定名稱的轉接器。

ActiveJob::QueueAdapters.lookup(:sidekiq)
# => ActiveJob::QueueAdapters::SidekiqAdapter
# File activejob/lib/active_job/queue_adapters.rb, line 135
def lookup(name)
  const_get(name.to_s.camelize << ADAPTER)
end