2012-12-11 9 views
6

Próbuję przekonwertować kolejkę Resque na Sidekiq. Ukończyłem całą konfigurację dla Sidekiq, a teraz jestem gotowy, aby dodać wszystkie moje zadania resque do sidekiq.Konwertowanie kolejki Resque na SideKiq

Moje pytanie brzmi: Czy mogę po prostu zmienić nazwę wszystkich kluczy resque w redis na odpowiednie klucze sidekiq?

Na przykład, jeśli mam kolejkę o nazwie "twitter", kluczem redis dla resque jest "resque: queue: twitter", ale kluczem w sidekiq będzie "queue: twitter". Czy mogę po prostu zmienić nazwę "resque: queue: twitter" na "queue: twitter"?

+0

+1 becoz Nie sądzę, aby zmienił nazwę kluczowego api na liście 'redis' Czekam, czy ktoś może mi udowodnić, że się mylę – Viren

+0

Dlaczego po prostu nie pozwoliłeś swoim obecnym pracownikom Resque przepłukać istniejących kolejek i pozwolić Sidekiqowi na obsługę jakieś nowe miejsca pracy? Ręczne przenoszenie zleceń nie powinno być konieczne. –

+0

@ChrisHeald, ponieważ zrobienie tego wymagałoby długiego czekania. –

Odpowiedz

6

Ok wreszcie go

Istnieje kilka globalne polecenie, które tęskniłem i rename jest chyba jednym z nich.

Gdzie można zmienić nazwy przycisków Jeśli chcesz

zrobić coś takiego

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

i sprawdzić, czy to działa

Cheers

Dzięki za pytanie To po prostu czyści autor: redis knowledge

1

Oto kod, którego użyłem do m igracja przez nasze istniejące zadania resque do sidekiq. Możesz użyć tego w konsoli szyn.

['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 

Można też po prostu ustawić:

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

i będzie działać po wyjęciu z pudełka. Ale po tym, jak wdrożyłem to bez tego, czekałem na prace w obu formatach, więc musiałem użyć pierwszego wklejonego kodu do migracji.