2015-12-24 34 views
2

我有兩個Rails應用程序運行在兩個不同的實例(可以說Server1Server2),但他們有相似的代碼並共享相同的Postgresql數據庫。Sidekiq服務器進程如何從Redis中的隊列中提取作業?

我安裝了Sidekiq並從兩臺服務器中推送隊列中的作業,但我只在Server1中運行Sidekiq進程。

我有一臺Redis服務器,它在Server1上運行,它與Server2共享Redis。

如果從Server2推送的作業在Server1的Sidekiq進程中處理,並且它實際上是我想要的。

我的問題是

  • Server1上的Sidekiq過程如何知道工作在Redis的推動?

  • 無論Sidekiq進程是否持續檢查Redis服務器上的任何新作業,或者Redis服務器是否在向Sidekiq進程顯示新作業?

我對此感到困惑和驚訝!

任何人都可以澄清一下Sidekiq的流程來從Redis服務器獲得工作嗎?

這對我這樣的新手會有幫助。

回答

2

Sidekiq uses redis命令命名爲BRPOP

該命令從列表中獲取元素(這是您的作業隊列)。如果列表爲空,則等待元素出現,然後彈出/返回它。這也同時適用於多個隊列。

所以不,sidekiq不輪詢redis和redis不推送通知到sidekiq。

+0

是否有任何可用於從隊列中獲取作業的sidekiq-server的rails控制檯命令? –

相關問題