2017-07-25 40 views
2

我在線閱讀一些教程,告訴我們使用ActiveJob和Sidekiq。但我不知道爲什麼我們應該這樣做。我看到Sidekiq具有ActiveJob所具有的所有功能。與Sidekiq一起使用ActiveJob與Sidekiq相比的優勢

此外,在Sidekiq文件:here

警告:通過做工作,通過ActiveJob重試,你失去了很多 Sidekiq功能:

  1. 的Web UI可見性(在試片會空)
  2. 您無法使用Sidekiq :: RetrySet API迭代重試。
  3. Sidekiq的日誌不會包含任何故障或回溯。
  4. 錯誤將不會被報告給Sidekiq的全局錯誤處理程序
  5. 許多高級的Sidekiq功能(例如批次)不會與AJ重試一起使用。

這是一個信號莫名其妙地讓我覺得我們不應該用ActiveJob使用Sidekiq。我瞭解ActiveJob的錯誤嗎?使用ActiveJobs和sidekiq有什麼優勢?

感謝

+1

該wiki頁面只是告訴你不要使用ActiveJob的重試,就這些了。它不會告訴你不要使用ActiveJob。 –

+1

@SergioTulentsev非常感謝。根據你的評論和Tony Vincent的回答,我可以理解一張照片。在你看來,你更喜歡在SIdekiq之上使用ActiveJob嗎? (因爲在這種情況下,我們必須接受這個解決方案中的一些弱點),例如重試工作。謝謝 –

+1

我使用ActiveJob over sidekiq,是的。 –

回答

2

從軌ActiveJob guide

主要的一點是要確保所有的Rails應用都會有一個適當的工作 基礎設施。然後,我們可以擁有框架功能和其他構建在其上的寶石,而不必擔心各種作業運行者之間的差異,例如延遲作業和 Resque。那麼,挑選你的排隊後端變得更加關注於操作 。而且你可以在不用 不得不重寫你的工作之間進行切換。

基本上,ActiveJob所做的是標準化作業隊列的API接口。這將幫助您輕鬆地從一個工作後端更改爲另一個工作。

當您在ActiveJob中使用Sidekiq時,您可以從sidekiq提供的好東西中受益,但真正的好處是當您發現另一個queuer最適合您的應用程序時,ActiveJob允許您切換到您選擇的工作隊列一個班輪

# application.rb 
config.active_job.queue_adapter = :sidekiq 
+0

非常感謝。但是如果我們在sidekiq上使用ActiveJob,那麼這些重試作業(在sidekiq文檔中提到)的缺點如何呢?你認爲我們應該更喜歡在這種情況下使用ActiveJob(並失去了一些其他有用的功能)?謝謝。 –

+0

@TrầnKimDự完全取決於你自己決定。問問你自己是否真的需要Sidekiq的重試標籤?你需要Sidekiq批處理等。如果答案是肯定的,請使用sidekiq,畢竟sidekiq是一個維護良好的項目 –

+0

@TrầnKimDự如果您正在部署到heroku,則可以在與應用程序相同的服務器上使用suckerpunch,但sidekiq需要另一個工作人員。 –

相關問題