4

Amazon (AWS) クラウドで新しい ASP MVC 注文アプリケーションを作成し、ローカル データセンターで永続化レイヤーを使用しています。CQRS パターンを使用します。プロジェクトの目標は、キューを使用して書き込み (コマンド/イベント) を保存および転送し、ローカル データセンターで非同期に取得および処理できる高可用性です。その後、WAN またはローカル データセンターに障害が発生した場合でも、クラウド MVC アプリは注文を受け取り、処理が再開されるまでキューに入れることができます。

私が最初に考えたのは、キューイングに AWS SQS を使用し、独自の c# アプリケーションで独自のキュー コンシューマー/ディスパッチャー/ハンドラーを作成して、着信メッセージ/イベントを処理することでした。

MVC (@Amazon) --> Event/POCO --> SQS --> QueueReader (@my datacenter) --> DB

次に、NServiceBus を見つけました。NSB は、メッセージの処理、再試行、エラーの処理など、多くの詳細を非常にうまく処理しているようです。

しかし、さらに調査すると、NServiceBus が物理的に分離された環境 (クラウドからデータセンターへ) で WAN 経由で使用されることを意図しているようには見えません。Google と SO は、私が必要とするように WAN を介して NServiceBus を使用することについて、あまり良いイメージを持っていません。

これはできますか?

MVC (@ Amazon) --> イベント/POCO --> NServiceBus over WAN --> NServiceBus Handler(s) --> DB

WAN で NServiceBus を使用するにはどうすればよいですか? または、Amazon とローカル データセンター間のキューイングとメッセージ処理を処理するためのより良いソリューションはありますか?

4

2 に答える 2

6

SQS を NServiceBus のトランスポートとして使用することはオプションですが、こちら で説明されているトレードオフに注意する必要があります。これは Azure キュー ストレージで行われていますが、優れた SQS 実装は知りません。

もう 1 つのオプションは、データセンターとAWS VPCの間に VPN を作成することです。これにより、対応するセキュリティ グループで適切なポートを開くと、AWS サーバーとデータ センター間の直接 MSMQ 通信が可能になります。このアプローチにはいくつかの注意点があります。まず、エンドポイント名についてです。NServiceBus バージョン 2.6 以下では、適切な DNS をセットアップする必要があるエンドポイントの名前として Environment.MachineName を使用します。それ以降のバージョンではマシンの IP アドレスが使用されていると思います。おそらく、より重要な警告は、VPN によってシステムがより結合されることです。

さらに別の方法は、ゲートウェイの NServiceBus 概念を使用することです。ただし、これは論理的なビジネス上の決定である必要があります。ゲートウェイは通常のトランスポートに非常に似ていますが、通常、その背後には異なるビジネス コンテキストがあります。

于 2012-10-13T18:05:35.167 に答える
4

NServiceBus には、物理​​的に分離されたデータ センターのブリッジングを処理する Gateway コンポーネントが含まれています。

http://docs.particular.net/nservicebus/gateway/

基本的に、メッセージングを HTTP チャネルに移動し、Web サービスで通常発生する再試行ロジックと重複排除の問題を処理します。

完全な NServiceBus パッケージをダウンロードすると (NuGet 経由で含めるだけでなく)、サンプルでいっぱいのフォルダーが表示され、そのうちの 1 つがゲートウェイの使用法をカバーしています。これは、開始するのに最適な方法です。

于 2012-10-16T14:22:32.213 に答える