2012-01-20 55 views
3

我正在使用共享相同數據庫的多個heroku服務器。我希望每臺服務器僅爲創建延遲作業條目的服務器處理延遲作業。使用delayed_job_3的新延遲作業的默認隊列?

例如:

服務器A只處理隊列 「SERVER_A」

服務器A只處理隊列 「SERVER_B」

等等

這是通過使用延遲招聘accomplishable 3(https://github.com/collectiveidea/delayed_job)

但是,爲了這個工作,我需要手動分配隊列名稱f或每個延遲創造的工作,這可能是一種痛苦。 (例如:object.delay(:queue =>'tracking')method)

相反,我希望能夠爲所有新作業分配一個「默認隊列」。理想情況下,我把這樣的事情在delayed_job_config.rb &它的工作原理:

DEFAULT_QUEUE_NAME = ENV [「APP_NAME」]

...的想法是,我什麼都不做,以現有延遲工作&他們自動獲得分配一個與應用程序服務器名稱相同的隊列。

我正在尋找關於如何完成此操作的建議 - 或者如果您想給它一個刺,請按我的方式拋出一些代碼。

在此先感謝!

回答

5

config/initializers/delayed_job.rb

Delayed::Worker.default_queue_name = `hostname`.chomp