2012-12-11 8 views
6

ResqueキューをSidekiqに変換しようとしています。私はSidekiqのセットアップ全体を完了しました。そして今、私のすべてのresqueジョブをsidekiqのものに追加する準備ができました。ResqueキューをSideKiqに変換する

私の質問は次のとおりです。redisのすべてのresqueキーの名前を対応するサイドキーキーに変更できますか?

たとえば、 "twitter"という名前のキューがある場合、resqueのredisキーは "resque:queue:twitter"ですが、sidekiqのキーは "queue:twitter"になります。私は単に "resque:queue:twitter"の名前を "queue:twitter"に変更できますか?

+0

+1 becoz「redis」リストにキーapiの名前が変更されていると感じていませんかいくつかが間違っているかどうかを確認してください – Viren

+0

既存のResqueワーカーに既存のキューをフラッシュさせてもらわないでください。新しい仕事はありますか?手動でジョブを移動する必要はありません。 –

+0

@ChrisHealdこれを行うには長い時間を待つ必要があるからです。 –

答えて

6

OK]をクリックして最後に

私は逃したとrenameは、おそらくそのうちの一つである、いくつかのグローバルコマンドがあり、それを手に入れました。

あなたは

この

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

ような何かをそして、それはそれだけでブラッシュアップの質問には

感謝を

乾杯

を働くかどうかを確認したい場合は、キーの名前を変更することができますどこに赤ちゃんの知識によって

1

これは私が私たちの既存のresqueの仕事をsidekiqに移してください。これはレールコンソールで使用できます。

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

また、単に設定することができます。

Sidekiq.configure_server do |config| 
    config.redis = { :namespace => 'resque' } 
end 
Sidekiq.configure_client do |config| 
    config.redis = { :namespace => 'resque' } 
end 
をし、それが箱から出して動作します。しかし、これを使わずにデプロイした後、私は両方のフォーマットで保留中のジョブを持っていたので、最初のコードを貼り付けて、それを移行しなければなりませんでした。

関連する問題