2

NServiceBusを使用して実装しようとしている機能がありますが、ここで使用するパターンがわかりません。(私はNServiceBusにかなり慣れていません)

私の不確実性がどこから来ているのかを説明しようと思います:

ユーザーの操作により、MVCコントローラーがトリガーされ、ドメイン操作を実行するコマンドが送信されます。このコマンドは、これが発生したことを他の人に通知するイベントを発生させます。

このイベントをサブスクライブするハンドラーは、別のドメイン操作を実行するかどうかを決定します。

これは、私が従うべき適切なパターンについてはっきりしないところです。この時点で、イベントハンドラーは次のようになります。

  • 必要な変更を加えるだけですか?
  • それを行うために新しいコマンドを送信しますか?もしそうなら、それを元のサービス/プロセスに送り返しますか?
  • 別のオプション?

私の一部は、これを処理するためにin-procドメインイベントを使用する必要があるかどうか疑問に思っていますが、最初のコマンドが戻る前に2番目のコマンドを待つ必要はないと思います。実際、それはずっと後に起こる可能性があります。そのため、バスを使用して非同期で処理するルートを選択しました。また、2番目の操作が終了したら、電子メールを生成する必要があります。それはさらに別のイベント/コマンドからトリガーする必要がありますか?

ありとあらゆるガイダンスに感謝します。

4

2 に答える 2

3

2 番目のアクションを待つ必要がない場合は、はい。最初のコマンドの処理で NServiceBus イベントを発行する必要があるため、非同期で実行する必要があります。そのイベントのハンドラーは (おそらく) 別のエンドポイントでホストされ、そこで別のコマンドを送信する必要はありません。

于 2012-08-10T10:47:51.860 に答える
1

Udiの答えに追加するには、元のエンドポイントのサービスが実際にそのコマンドの動作を担当する必要がある場合にのみ、コマンドを元のサービスに送り返します。それ以外の場合、イベントを受信するサービス (エンドポイント) は、イベントに応答して必要なことを実行する必要があります (これはあなたのケースのように聞こえます)。

于 2012-08-10T13:02:53.107 に答える