1

免責事項:これは、非常に徹底的に回答されたNServiceBusに関する他の質問の続きの質問です。

私の現在の質問はこれです:上記の記事のようにウェブサイトが「ダム」になるように構築されている場合、次のシナリオはどのように機能しますか?

ユーザーは、関連する詳細をフォームに入力してWebサイトに登録します。ユーザーがフォームの[送信]ボタンをクリックすると、Webアプリケーションはフォームデータを取得し、NServiceBusとBus.Send()を使用してアプリケーション層に送信するメッセージを作成します。アプリケーション層は、新しいユーザーを作成し、ユーザーが作成されたイベントを公開して(Bus.Publish())、他のプロセスが自分のことを実行できるようにします(新しいユーザーにメールを送信し、ユーザーを検索インデックスに追加します)。 、など)。

このシナリオのWebアプリケーションは、新しいユーザーインスタンスの作成をアプリケーション層に完全に依存しているため、ユーザーのIDをどのように知ることができますか?このシナリオでNServiceBusを使用しなかった場合、WebサイトにDALへのインプロセス呼び出しを発行させる場合は、NHibernateのGuidComb()戦略を使用して、新しい行を永続化する前に新しいユーザーの識別子を作成します。データベース。(現在のシナリオで)新しいユーザーを作成するコマンドを受信するメッセージハンドラーアプリケーションが同じ戦略を使用する場合、userIdはどのようにWebアプリケーションに伝達されますか?

このようなシナリオで識別子を管理するために別の戦略を適用する必要がありますか?

4

2 に答える 2

3

IDをWebアプリケーションのメッセージに配置することで、相関識別子として使用するIDを自由に思い付くことができます。これにより、メッセージによって開始されるすべてのプロセスでIDを実行できます。

そうすれば、相関IDを提供することを覚えている場合にのみ、要求をシステム内の他のイベントと相関させることができます。

しかし、同じWebリクエストでユーザーIDをフィードバックしたいようです。これは、メッセージングが提供する非同期バックエンドでは簡単に実行できません。

ユーザーが作成されたときに、ユーザーのセッションを再開する、ある種のゲートウェイへの(秘密の)リンクを含む電子メールをユーザーに送信することは許容されませんか?

于 2011-01-13T11:26:45.917 に答える
0

UIは、「ユーザーが作成した」イベントのバスをリッスンできませんか?次に、イベントに「ユーザー作成要求」イベントにリンクするある種のイベントIDを含めるか、イベント内の他の既知のデータ(ユーザー名など)と関連付けることができます。ただし、「ユーザー作成の失敗」イベントなど、複数のイベントもリッスンする必要があります。

これは、Webブラウザでの通常のAJAX処理と同じです。技術的には、Webサーバーへの帯域外コールバックをブロックしません。呼び出しを呼び出し、非同期でコールバックを待ちます。

于 2011-01-13T14:58:48.047 に答える