一般的なメッセージキューイングシステム(RabbitMQ、ActiveMQなど)のドキュメントを読むと、ロードバランシングは常にキューイングシステム(ラウンドロビン)または複数のキューを使用するプロデューサメッセージの属性。しかし、我々のアプリケーションでは、消費者でなくても誰も、メッセージを処理するのにどれくらいの時間がかかるかを知っています。数ミリ秒から数時間の間で設定できます(基本的に任意の入力xに対して任意の関数fを計算しています)。したがって、ロード・バランシングは、「ロード」がしきい値を下回っている(ロードは実行ジョブ数、CPU負荷など)場合にのみメッセージを受け入れるという点でコンシューマによって実行される必要があります。理想的には、プロデューサはメッセージをキューに入れ、メッセージはすべてのコンシューマに「提供」されますが、ただ1人のコンシューマだけがメッセージを受け入れて処理します。第1ラウンドでコンシューマーを受け入れるコンシューマーもなく、1人のコンシューマーがフリーリソースを確保するまでキュー内にとどまることさえあります。 質問があります:一般的なメッセージキューイングシステムで何とか可能ですか、間違った方向に向かっていますか?コンシューマベースのロードバランシングを使用するメッセージキュー
1
A
答えて
0
これは、これらのシステムの性質上、まったく実際の追加作業なしで達成できます。 RabbitMQでは、先にフェッチするジョブの数を指定するprefetch sizeを設定できます。これを0に設定すると、各コンシューマは一度に1つのジョブしか持てません。これをメッセージ肯定応答と組み合わせて使用したいので、消費者は別のメッセージを提供する前にメッセージを確認する必要があります。
すべてのアイドル状態のコンシューマがジョブの待機を待機し、MQはFIFO順にジョブをスプール・オフします。ジョブの処理が完了すると、そのジョブが実行され、MQによってキュー内の次のジョブが実行されます。コンシューマがアイドルで、ジョブの準備ができていない場合、コンシューマが使用可能になるまで、メッセージがキューに格納されます。
関連する問題
- 1. メッセージキューを使用したプロジェクトアーキテクチャ
- 2. 熱方程式を使用したロードバランシング
- 3. 動的ルーティングを使用したKamailioロードバランシング
- 4. アスタリスクopenser/opensipsを使用したロードバランシング
- 5. proxy_balancerを使用したApacheロードバランシング
- 6. Windows用メッセージキュー
- 7. メッセージキューとISO8583メッセージを使用したTCP
- 8. Cシグナルの使用とIPCメッセージキューを使用したプロセス
- 9. CeleryのメッセージキューとしてMongoDBを使用する
- 10. ロードバランシングに使用するHTTPテストツールはどれですか?
- 11. certbot/lets-encryptをDNSロードバランシングで使用していますか?
- 12. カスタムドメインとDNS SRVレコードを使用したBluemixでのロードバランシング
- 13. メッセージキューを使用したプロセス間でのメッセージの受け渡し
- 14. Mod_Jkロードバランシング
- 15. ロードバランシングが
- 16. MongoDBロードバランシング
- 17. メッセージキューをモデル化する
- 18. MQTTクライアントのロードバランシング
- 19. RabbitMQクライアントのロードバランシング
- 20. Javaロードバランシングのオプション
- 21. Linux上でPOSIXメッセージキューをユーザー間で使用できますか?
- 22. メッセージキューを使用したJava Cの統合
- 23. JMeterを使用したJMSメッセージキューの機能テスト
- 24. Redis経由でGETを使用してKEYをロードバランシング
- 25. PHPユーザーA/Bテスト用のロードバランシング
- 26. AkkaクラスタとDNSロードバランシングの併用
- 27. Websphereメッセージキュー
- 28. メッセージキューENOMEM
- 29. ESBおよびDSSクラスタリング、WSO2を使用した動的ロードバランシング
- 30. ユーザーメッセージのメッセージキュー
ありがとうございます。私はそれを試してみましょう。 – sithmein