Resque が複数のサーバーでバックグラウンド ジョブを実行する Rails アプリケーションがあります。ジョブはリソースのニーズが異なるため、各サーバーで実行できる特定の種類のジョブの量を制限したいと考えています。複数のサーバーが同じ Redis データベースにクエリを実行できるようにしたいと考えています。
シナリオは次のとおりです。Server-1 と Server-2 が同じ Redis データベースに接続されています。
1) 各サーバーは、最大 3 つの「エンコード」ジョブと 5 つの「解析」ジョブ (合計 8 つのジョブ) を実行する必要があります。
2) ある時点で、Redis サーバーの「エンコード」キューに 10 個のジョブ、「解析」キューに 12 個のジョブがあり、Resque ワーカーが処理できるようになります。同じデータベースにクエリを実行する 2 つのサーバーを実行しています。
質問: Server-1 が 8 つの「エンコード」ジョブを実行し、Server-2 が残りを実行しないようにするにはどうすればよいですか? つまり、Server-1 が「エンコード」キューから 3 つのジョブのみを取得し、「解析」キューから 5 つのジョブのみを取得するように制限し、Server-2 に同じことをさせる方法は?
個々の調整なしで複数のサーバーに展開できるように、コードを普遍的に保ちたい..