2012-12-11 13 views
6

Sto provando a convertire una coda di resque in Sidekiq. Ho completato l'intera configurazione di Sidekiq e ora sono pronto per aggiungere tutti i miei lavori di resque a quelli sidekiq.Conversione di una coda di resque su SideKiq

La mia domanda è: posso semplicemente rinominare tutti i tasti resque in redis ai tasti sidekiq corrispondenti?

Ad esempio, se ho una coda denominata "twitter", la chiave di redis per resque è "resque: queue: twitter", ma la chiave in sidekiq sarebbe "queue: twitter". Potrei semplicemente rinominare "resque: queue: twitter" in "queue: twitter"?

+0

+1 becoz Non credo ci sia rinominare l'api chiave nella lista 'redis' Guardare avanti se qualcuno può dimostrarmi sbagliato – Viren

+0

Perché non dovresti semplicemente lasciare che i tuoi dipendenti di Resque attuali scarichino le loro code esistenti, e lascia che Sidekiq gestisca nuovi posti di lavoro? Spostare manualmente i lavori non dovrebbe essere necessario. –

+0

@ChrisHeald perché così facendo richiederebbe molto tempo. –

risposta

6

Ok finalmente capito

ci sono pochi comando globale che ho perso e rename è forse uno di loro.

Dove è possibile rinominare le chiavi Se si desidera

fare qualcosa di simile

redis.rename "resque:queue:twitter","queue:twitter" 

e vedere se funziona

Acclamazioni

Grazie per la domanda 'appena spazzolato up di conoscenza redis

1

Ecco un codice che ho usato per m igrate sopra i nostri lavori resque esistenti a sidekiq. Puoi usarlo nella console di rails.

['low', 'high', 'critical'].each do |queue| 
    p [1, queue] 
    old_queue = "resque:queue:#{queue}" 
    new_queue = "queue:#{queue}" 
    # $redis.ltrim new_queue, 0, 0 # can optionally clear out new queue, in case of multiple runs 

    vals = $redis.lrange(old_queue, 0, -1) 
    p [2, queue] 
    $redis.pipelined do 
    vals.each do |val| 
     $redis.lpush(new_queue, val) 
    end 
    end 
end 

si può anche solo impostare:

Sidekiq.configure_server do |config| 
    config.redis = { :namespace => 'resque' } 
end 
Sidekiq.configure_client do |config| 
    config.redis = { :namespace => 'resque' } 
end 

e funzionerà fuori dalla scatola. Ma dopo averlo distribuito senza questo, avevo sospeso i lavori in entrambi i formati, quindi dovevo usare il primo codice che ho incollato per migrare le cose.

Problemi correlati