AMQP を使用したバックグラウンド ジョブ処理システムがあります。複数のサーバーが同じキューからジョブを消費しています。これらの各サーバーは、4 つのワーカー プロセスを実行しています。ここまでは順調ですね。
処理されるジョブ自体にはIPCが必要です。一貫性を保つために、AMQPキュー(もちろん別のもの)を再度使用します。アイデアは、次のように、各ワーカーに対応する IPC があるというものでした。
/ IPC queue \
Main queue ---> * W1 / \ W1-counterpart
> * W2 / \ W2-counterpart
> * W3 / \ W3-counterpart
> * W4 / \ W4-counterpart
\ IPC Result queue /
カウンターパートは独立して動作できるので、W3 カウンターパートが W1 のジョブを処理していれば問題ありません。問題は、システムが常に十分に活用されていないように見えることです。メイン キューがジョブでいっぱいの場合でも、同時に 2 つしか処理されていないように見えますが、別の瞬間に 4 つすべてが使用されます。なんで?これが常に機能しないのはなぜですか?