跳到內容 跳到搜尋

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      |
| 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     |
| Active Job Test   | No    | Yes    | N/A        | N/A        | N/A     | N/A     |

Async

是:排隊介面有能力以非封鎖方式執行工作。它會在個別或分岔的程序,或在不同的執行緒上執行。

否:工作會在同一個程序中執行。

排隊

是:工作可以透過 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 137
def lookup(name)
  const_get(name.to_s.camelize << ADAPTER)
end