0

NServiceBus を使用して、外部サービスに顧客情報を要求し、タイムアウトを発生させるサガを作成しました。タイムアウトの期限が切れた後、そのサガは外部サービスに応答があるかどうかを確認します。それに応じて、対応する顧客のデータがあり、その対応する顧客がシステムに存在するかどうかを確認する必要がある状況があります (存在しない場合は作成する必要があります)。その後、それを参照する追加の監査エンティティを作成する必要があります。顧客 (それらを作成するために必要な情報がすべて揃っている場合)。

特定の顧客が存在するかどうかを確認する方法と、顧客を作成する方法がない場合はどうすればよいのだろうか。

これまでのところ、いくつかのアイデアがあります。

  • メッセージ ハンドラー内から WCF サービスを呼び出す (チェック、作成)

  • NSB 経由で Customer 境界コンテキストにメッセージを送信し、ID を含む応答を待ちます。

4

1 に答える 1

3

これには、NServiceBus メッセージ処理パイプラインを活用できます。「顧客サービス」からのハンドラーを最初に実行するように構成します。これにより、顧客の存在を確認し、必要に応じて顧客を作成し、最後に、処理される元のメッセージに CustomerID プロパティを設定して、次のハンドラーがそれが何であるかを認識できるようにします。

これにより、プロセス全体でトランザクションの一貫性が得られます。

あなたが説明したパブリッシュ/サブスクライブ モデルも機能する可能性があります。私はそれがあまり好きではありません。なぜなら、あなたは一種のリクエスト/レスポンスのイベントに参加していて、誰が顧客情報に本当に責任があるのか​​ はっきりしないからです(必要なデータは、お客様)。

ドメインを深く掘り下げずに、より規範的になることは困難です。

于 2012-08-31T07:09:35.190 に答える