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