2012-07-23 44 views
1

所以我注意到resque-lock是關於阻止工作排隊。但是如果我希望我的隊列被完全填充,但是我想在特定情況被鎖定時要重新排隊。爲了解決這個問題:因爲我的隊列由一堆主機(例如google.com,yahoo.com,yahoo.com和apple.com)組成,所以我不希望兩個相同的主機在同時!我怎麼做?我有重新鎖定工作,但我認爲這不會幫助解決這個問題。當類似工作已經在運行時,Ruby Resque requeueing?

例子:

隊列:

google.com 
yahoo.com 
apple.com 
apple.com 
stackoverflow.com 

工人:

  • 2名工人都在找工作,找到:google.com和yahoo.com(沒關係)
  • 2名工人正在尋找新的工作,並找到:apple.com和apple.com
  • 不行,就把第二apple.com工作回到了隊列中,並繼續

如何得到與resque這種行爲的任何想法?我的例子描述了2名員工的情況,但主要想法是,無論員工數量多少,只有同一個主持人的兩份工作不應同時運行。不允許運行的作業應放回隊列中。

回答

1

我爲此製作了自己的resque插件,名爲resque::workers::lock

+0

問題:當你重新排隊工作時,它會回到原來的位置,還是到最後的位置? – Tilo 2013-03-23 20:47:40

+0

@Tilo到最後,否則其他工作不會得到處理的變化。 – bartolsthoorn 2013-03-24 18:58:27

+0

我有類似的問題,但所有作業(具有相同的鎖定值)需要保持排序順序,因爲它們包含需要按照它的順序處理的部分數據。 – Tilo 2013-03-24 19:32:23

相關問題