次の状況を考慮してください。
- 処理する必要のある多数の「ジョブ」を作成し、それらをキューに入れるプログラムがあります。
- 他のワーカープログラムで次の「ジョブ」を取得して、そのジョブを処理できるようにします。
- 各ジョブにはカテゴリがあります。
- カテゴリはいくつあってもかまいません。
- 同じカテゴリの2つのジョブを別々のワーカーで同時に処理することはできません。
- ワーカーは一度に1つのジョブを処理できます。
同じカテゴリの複数のジョブが同時に処理される可能性があるため、この状況では従来のキューは機能しませんが、これは許可されていません。
取得するジョブをワーカーに確認させ、そのジョブカテゴリに現在処理中の別のワーカーがあるかどうかを確認し、そうである場合は後で処理するためにジョブをキューに再送信します。これは、この問題を解決する非効率的な方法のようです。この問題を解決できるデータ構造または設計パターンはありますか?
さらに説明が必要な場合は、お知らせください。