2013-03-29 85 views
0

我有一個Ruby on Rails應用程序,我需要維護一個ID隊列。我嘗試使用全局數組作爲隊列,但隨後讀取Web應用程序中的全局變量停止爲全局的,如果我的應用程序的多個實例運行。那麼我如何維護一個應用程序廣泛的隊列呢?在我的Rails應用程序中實現全局隊列數據結構

這裏是我的ApplicationController的樣子:

class ApplicationController < ActionController::Base 
    protect_from_forgery 

    helper_method :update_queue, :get_next_free_agent 
    $agent_queue = [] 
    def update_queue(agent) 
    if agent.status == "AVAILABLE" 
     if agent_queue.find_index(agent.reg_id) == nil 
      $agent_queue.push(agent.reg_id) 
     end 
    else 
     $agent_queue.delete(agent.reg_id) 
    end 
    end 

    def get_next_free_agent 
    return agent_queue.shift 
    end 
end 

也不做這項工作,我也不想用它更多的閱讀有關如何全局變量區壞主意。請提供備用解決方案。

謝謝。

+1

http://redis.io/ – deefour

+0

正如指出的那樣,任何鍵值存儲。 Redis,Memcached等 – Kashyap

回答

1

從遠處看來,您的問題似乎可以通過Resque等Message Queue System來解決。

如果你不想走這條路線,將數組存儲在一個鍵值存儲區中,該存儲區提供原子彈出和推入數組(如redis),這樣你不必擔心只有一個處理陣列