を作業負荷を分散しますカテゴリが特別な順序で来るので、カテゴリAに関連するジョブj1がカテゴリjに関連するジョブj2の前に来る場合、j1はj2の前に処理されなければならないが、カテゴリBに関連するジョブj3はその間で処理することができる。
は、すべてのジョブでのキューを作成し、このキューから引っ張って、いくつかの労働者を持っている:
は、私はこれを実装する方法の2つのアイデアを持っています。カテゴリAに関連するジョブを作業者が引っ張った場合、カテゴリAに関連するジョブをロックして、他の誰もそれらのジョブを処理しないようにする必要があります。その後、ロックが解除されます。
各カテゴリのキューを用意し、どのキューから取り出すかを作業者に伝えます。カテゴリキューを担当するワーカーが1人だけの場合は、ロックする必要はありません。作業者は多くのキューを担当する可能性があります。
私は1つのキューとの考えを好きで、各ワーカーのための特別なキューを指定する必要がありませんが、私はカテゴリごとにセマフォのいくつかの種類を実装することのアイデアを好きではありません。
これまで私は大きな成功を収めてキューイングにRedisを使用しましたが、多分私を助けることができるより多くのパターンを持っているzeromqを調べ始めました。
これを行う最善の方法と、どのツール/ライブラリをお勧めできますか?