13.2 サンプルSagaアプリケーションについて

サンプルSagaアプリケーションを使用して、旅行(ホテル客室と航空券の予約を含む)を予約します。

次の図に示すサンプルSagaアプリケーションには、いくつかのマイクロサービスが含まれています。これはMicroTxを使用してSagaトランザクションを管理する方法を示しています。サンプル・アプリケーションの各マイクロサービスは、異なるタスクを実行します。1つのマイクロサービスが旅行を予約し、もう1つ航空券を予約し、3つ目のマイクロサービスがホテルを予約します。MicroTxは、これらのマイクロサービス間のトランザクションを調整します。

サンプルSagaアプリケーションの図

サンプルSagaアプリケーションは、次の多言語マイクロサービスで構成されます:

  • MicroTx (Sagaコーディネータ)は、サンプル・マイクロサービス間のトランザクションを調整します。
  • 旅行マネージャ・サービスは、トランザクション・イニシエータ・サービスです。ここで、Sagaトランザクションが開始します。旅行を予約する際に、このサービスが、航空券とホテルを予約するために航空券とホテルのサービスをそれぞれコールします。旅行マネージャは、ホテルと航空券の両方を予約するAPIと、その予約を取り消すAPIを公開します。ホテルと航空券の両方が正常に予約されます。または、エラー時には両方の予約が取り消されます。
  • ホテル予約サービスは、ホテル客室を予約するAPIと、エラー時に予約を取り消すAPIを公開します。これは旅行マネージャ・サービスによってコールされて、客室を予約します。これは既存のSagaのコンテキスト内でコールされるため自らを登録し、Sagaコーディネータが客室予約を完了または補正するために使用するコールバックURIを提供します。
  • 航空券予約サービスは、航空券を予約するAPIと、エラー時に予約を取り消すAPIを公開します。これは旅行マネージャ・サービスによってコールされて、航空券を予約します。これは既存のSagaのコンテキスト内でコールされるため自らを登録し、Sagaコーディネータが航空券予約を完了または補正するために使用するコールバックURIを提供します。
  • 旅行クライアントは、予約の確定または取消しに使用できるユーザー・インタフェースです。これはSagaトランザクションには参加しません。これは、サンプル・クライアント・サービスとして提供され、Sagaプロトコルを使用する分散トランザクションを実行するマイクロサービスをコールします。

Sagaサンプル・アプリケーションのソース・コードは、microtx-samples GitHubリポジトリのlraフォルダにあります。MicroTxライブラリは、サンプル・アプリケーション・マイクロサービスのコードに含まれています。サービスは、MicroTxライブラリを使用する際、公開されているRESTエンドポイントを介して相互に通信します。

このアプリケーションを実行すると、ホテル客室と航空券が予約され、仮予約が行われます。予約を確定する承認を与えた場合のみ、ホテル客室と航空券の予約が確定されます。仮予約を取り消すと、押さえていたホテル客室と航空券が解放され、予約が取り消されます。デフォルトでは、フライト・サービスで確定できるのは2件の予約のみです。エラー・シナリオをテストできるように、フライト・サービス・サンプル・アプリケーションは、2件の予約の確定後に追加の予約リクエストが行われると拒否します。これは、旅行のホテル仮予約の取消(補正)につながり、その旅行は予約されなくなります。