6
  1. ユーザーがサイトに登録し、ログインします。RegisterUserCommand が非同期コマンド ハンドラーに送信されます。
  2. ユーザーは自分のアドレスを変更したいのですが、RegisterUserCommand がまだ処理されていません。システムにユーザー レコードがありません。

これは同期コマンド ハンドラーの場合ですか? ユーザーを認証する前に、ユーザー レコードが作成されます。または、登録後に認証ユーザーに対する要件を再考する必要がありますか? アカウントが作成されるまで、ユーザーはサイトにアクセスできません。ユーザーがすぐにシステムにアクセスできない場合、使用率が低下する可能性があります。

CQRS システムで同期コマンド ハンドラーと非同期コマンド ハンドラーが混在しているのはよくあることですか?

4

1 に答える 1

9

私はすべてを async で実行しています。すべてをシンプルにするために、キューは FIFO です。さらに、パーティションごとに 1 つの処理スレッドがあります。このように、コマンドは常に送信順に処理されます。さらに、ソリューション全体を再パーティション化する必要なく、パーティションごとのスレッドをパーティションごとのマシンに単純に変換できるため、スケーラビリティも維持されています。

同期処理が必要な場合がいくつかあります (私の場合、最初のユーザー登録です。サーバーを続行させる前にいくつかのことを検証する必要があるためです)。この場合、コマンドが送信された後、「登録が処理されるまで数秒お待ちください」というメッセージがユーザーに表示されます。登録が確認される (または失敗する) とすぐに、ユーザーは自動的に次の画面に移動します。これは、Web UI で AJAX を使用する場合は簡単です。デスクトップ UI はさらにシンプルです。

于 2010-09-22T07:17:14.390 に答える