NServiceBusSagasをRESTAPIと統合/相互作用するための最も賢明なアプローチは何ですか?
シナリオは次のとおりです。
- 負荷分散されたRESTAPIがあります。負荷に応じて、ノードを追加できます。
- REST APIは、DomainServicesAPIのラッパーです。これは、APIを直接使用できることを意味します。
- ワークフローにSagasを使用し、スケールアウトするためにNServiceBusDistributorを実装したいと思います。
問題は、SagasのREST APIを使用する場合、実際の処理はAPIファームで行われるということです。これは、ある意味でディストリビューターパターンを実装する目的を無効にします。
一方、Sagasから直接DomainServives APIを使用すると、ワーカーノード内でローカルに処理できます。このアプローチでは、APIアセンブリを複数の場所で維持する必要がありますが、スループットが高くなる可能性があります。
私は最善のアプローチを理解しようとしています。個人的には、API(すぐに利用できる場合)を使用したいのですが、これによりシステムに雑然としたものが導入され、処理中と比較して完了までに時間がかかる可能性があります。
典型的なシーケンスは、オンライン広告の公開に似ている可能性があります。
- 広告主は、Webアプリケーションを介して新しい広告リクエストを送信します。
- Webアプリケーションは、関連するAPIエンドポイントを呼び出し、コマンドメッセージを送信します。
- コマンドメッセージは、新しい公開アドバタイズメント佐賀インスタンスを開始します。
- Sagaは、呼び出し元のアクセス許可を検証するコマンドを送信します(処理中/処理中のAPI呼び出し)
- Sagaは、アドバタイズメントデータを検証するコマンドを送信します(処理中/処理中のAPI呼び出し)
- 佐賀は詐欺サービス(サードパーティサービス)にコマンドを送信します
- コンテンツと不正の検証が成功したら、
- 佐賀は課金システムにコマンドを送信します。
- SagaはAPI呼び出しを呼び出して、追加の詳細を保存します。(インプロセス/アウトプロセスAPI呼び出し)
そして、これはアドバタイズメントの有効期限が切れるまで続き、再試行と失敗の条件パスがいくつかあります。