我正在開發一個多用戶樹編輯應用程序。它使用resque gem作爲後臺進程。爲了避免運行時多用戶衝突,我想使用命令模式並將用戶操作存儲在resque隊列中,因此如果有人正在刪除分支,則其他用戶無法編輯該分支的子級。使用resque實現命令模式
它可以工作,但是第一次從隊列中選擇作業的速度非常慢,因爲resque worker會使用5秒的時間間隔檢查作業。它顯着降低了編輯界面的速度。這是possibe做這樣的事情:
cmd = MyCommand.create!(:attr1 => 'foo', :attr2 => 'bar')
Resque.enqueue(MyCommand, cmd.id)
workers = Resque.workers.select {|w| w.queues.include?('my_queue') }
raise "Should be only one queue for commands!" if workers.size != 1
not_done = true
while not_done
not_done = workers[0].process
end
它做什麼,我需要,但我不知道是否有這樣做的更優雅的方式。另外,對於Worker實例,process是已棄用的方法。
令我印象深刻的是resque/redis速度,並且不介意圖形用戶界面的延時低於10-20毫秒。 Resque還允許爲開箱即用的特定任務使用單獨的處理器。所以現在我沒有看到切換到memcached或inmemory解決方案的強有力的理由 – dimus 2011-02-03 14:56:07