1

EDA と NServiceBus を使用して 2 つのアプリケーションを分離しようとしています。現在、販売MTと在庫MTを持っています。セールス MT を通じて販売が要求されると、承認される前に、セールス MT は在庫 MT を呼び出して、利用可能な在庫があることを確認します。これが機能する方法を変更して、Sales MT が自動的に承認し、非同期の「SaleCreated」イベントを発行し、Inventory MT と Billing MT がサブスクライブするようにしたいと考えています。在庫 MT は、在庫切れのアイテムがある場合、オフライン プロセスで販売にフラグを立てることができます。

私の問題は、販売 MT のインスタンスが 10 個、在庫 MT のインスタンスが 5 個、請求 MT のインスタンスが 3 個あることです。3 つのアプリケーションはすべて、10/5/3 サーバーの前にある LoadBalancer の上に独自の仮想 IP を持っています。したがって、基本的に、1 つの仮想パブリケーション (SaleCreated イベント) と 2 つの仮想サブスクリプション (Inventory および Billing サブスクライバー) があります。理想的には、Sales MT によって処理される Sale は、1 つの Inventory MT と 1 つの Billing MT に送信される SaleCreated イベント メッセージを作成する必要があります。NServiceBus サイトでこのシナリオの例を見たことがないので、これがどのように機能するのか本当に混乱しています。また、サブスクリプションごとに 1 つのディストリビューターにすべてのメッセージを送信したくありません。1 つのマシンがボトルネックになるからです。

これを行う方法はありますか?

4

1 に答える 1

1

パブリッシング側では、DB サブスクリプション ストレージ オプション (プロダクション プロファイルにあります) を使用して、すべてのパブリッシング インスタンスがサブスクライバーの同じリストを参照できるようにします。サブスクライブ側では、ディストリビューターを使用して受信するイベントの負荷を分散し、各メッセージが 1 つのインスタンスのみにディスパッチされるようにします。サブスクライバーごとに 1 つのディストリビューターを使用するため、実際のボトルネックはなく、ディストリビューターは実際の作業を行わないため、あまり問題にならないことに注意してください。

于 2010-07-08T21:53:11.500 に答える