共有モードで設定されたキューに複数のコンシューマがバインドされているという問題があります。問題は、rabbitmq がメッセージをシリアライズしているように見えることです。つまり、一度に実行できるコンシューマーは 1 つだけです。これを平行にする必要がありますが、方法がわかりません。
各コンシューマは独自のプロセスで実行されています。キューには大量のメッセージがあります。私は py-amqplib を使って RabbitMQ とやり取りしています。
何かご意見は?
共有モードで設定されたキューに複数のコンシューマがバインドされているという問題があります。問題は、rabbitmq がメッセージをシリアライズしているように見えることです。つまり、一度に実行できるコンシューマーは 1 つだけです。これを平行にする必要がありますが、方法がわかりません。
各コンシューマは独自のプロセスで実行されています。キューには大量のメッセージがあります。私は py-amqplib を使って RabbitMQ とやり取りしています。
何かご意見は?
プリフェッチ (QOS) はどうですか? 小さなキューでは、キューを宣言し、現在利用可能なメッセージの数を取得し、コンシューマーをアタッチし、メッセージを消費し、メッセージの数が消費されたらキューを閉じることにより、並列処理の外観を与えます。メッセージを確認せずにチャネルを閉じると、他のコンシューマーがメッセージを利用できるようになり、キューを十分に迅速にポーリングして、並列的なソリューションを実現できます。
参考までに、推奨される AMQP モデルは、接続されたコンシューマーごとのキューのようです。「直接」交換を作成し、すべての消費者がリッスンするルーティング キーに同意する必要があります。次に、接続する各コンシューマーは、排他的で非永続的なプライベートqueue_bind()
キューを作成し、交換の公開ルーティング キーに一致するメッセージにキューをサブスクライブするために使用する必要があります。この配置を使用すると、ワーカーは操作をシリアル化するのではなく、並行して操作できるようになります!