私のアプリケーションは、ユーザーごとに順次処理する必要がある resque ジョブを作成し、できるだけ速く処理する必要があります (最大 1 秒の遅延)。
例: user1 には job1 と job2 が作成され、user2 には job3 が作成されます。Resque は job1 と job3 を並行して処理できますが、job1 と job2 は順番に処理する必要があります。
私は解決策についてさまざまな考えを持っています:
- 異なるキュー (例: queue_1 ... queue_10) を使用して、各キュー (例:
rake resque:work QUEUE=queue_1
) のワーカーを開始できます。ユーザーは実行時にキュー/ワーカーに割り当てられます (ログイン時、毎日など)。 - 動的な「ユーザー キュー」(例: queue_#{user.id}) を使用して、一度に 1 つのワーカーだけがキューを処理できるように resque を拡張しようとすることができます ( Resque: one worker per queueで質問されているように) 。
- ジョブを非レスキュー キューに入れ、それらのジョブを処理するレスキュー ロック ( https://github.com/defunkt/resque-lock ) を備えた「ユーザーごとのメタ ジョブ」を使用できます。
これらのシナリオのいずれかを実際に使用した経験はありますか? または、検討する価値のある他のアイデアはありますか? ご意見をいただければ幸いです。ありがとうございます。