2012-06-04 57 views
0

我有一個處理某些'產品'thar通過JSON發送的隊列。我按照{1,2,3,4}的順序收到它們,但在{1,3,2,4}中進行了resque處理。由於舊版本的Product可以覆蓋已經處理過的新版本
有沒有辦法讓resque像process {job} orderede by {job.field_I_want}一樣?如何使訂購再處理作業

編輯:那排隊工作

def produto 
     if params[:json] 
#   upload = params[:json] 
#   content = upload.read 
#   parsed_json = JSON(content) 

      parsed_json = JSON(params[:json]) 
      parsed_json['idFila'] = params[:idFila] 

      logger.info parsed_json 

      Resque.enqueue(ProdutoWorker, parsed_json) 
      render json: ActiveSupport::JSON.encode(Retorno.new(:status => "OK", :mensagem => "Produto recebido")), :status => :ok 
     else 
      render json: ActiveSupport::JSON.encode(Retorno.new(:status => "Erro", :mensagem => "Sem JSON")), :status => :not_found 
     end 

     rescue => exception 
      render json: ActiveSupport::JSON.encode(Retorno.new(:status => "Erro", :mensagem => "#{exception}")), :status => :error 
     end #Produto 

回答

0

resque處理工作中,他們排隊的順序代碼,你可以張貼排隊的作業的代碼?

+0

編輯我的問題。謝謝 –

+0

我不能說那麼多的代碼,我想問題是哈希沒有命令,請嘗試在你的worker的執行方法上做這樣的事情: parsed_json.keys.sort.each do | key | process(parsed_json [key]) end resque worker的執行方法的相關代碼是什麼? – arieljuod

+0

Ruby 1.9中的哈希保持順序。 –