アプリケーションでRabbitMQをESBとしてMassTransitを使用して調査しています。私が探している主な利点は、永続的な非同期メッセージング処理を着信データ ストリームに追加することです。
アプリケーション プロファイルには 2 つの部分があります。
着信データ ストリーム
- 一方向メッセージ
- 非同期処理
- 1 分あたり 1 万件以上のメッセージ
ウェブサイトの活動
- 双方向
- 理想的には c# async await 言語機能を使用しますが、双方向のデータが必要です
- < 100/分
Web アプリのメッセージングは必須ではありませんが、同じメカニズムに従って、ESB を介したデータ アクセスを完全に抽象化するとよいでしょう。
質問:
私が読んだことから; ESBノードは、バス上の他のノードを認識したり、気にしたりしてはなりません。自分の仕事をしてバスにメッセージを送信し、必要に応じて応答を待つ必要があります。私にとって、これは、各 Web/アプリケーション サーバーが独自のローカル クラスター キューを持つことを意味します。この仮定は正しいですか?
それが正しい場合。プログラムでマシンをクラスターに追加するにはどうすればよいですか? 注意が必要な落とし穴はありますか?
これが正しくない場合。キュー クラスタをどのように管理しますか? 専用クラスターの作成には、DNS エントリ、冗長性/オフライン ノードの負荷分散など、独自の問題があります。
私は ESB が MassTransit の実装と共に追加できる機能に落ち込んでいますが、耐久性のある構成でそれをどこでどのようにセットアップするかのベスト プラクティスのロジスティクスに少し戸惑っています。
フィードバックとアドバイスをありがとう
更新 マシン インフラストラクチャに EC2 を利用しています。特に、アベイラビリティ ゾーンを使用して、データ センターの停止を最小限に抑えています。この構成では、3 つのゾーンがあり、各ゾーンには Web サーバー、アプリ サーバー、DB サーバー (Couchbase) があります。また、EC2 のロード バランサーを使用して、ゾーン間で負荷を共有しています。
@Travis: Amazon の EC2 内で MT / RMQ を使用した経験 / アドバイスはありますか?