13.1 XAサンプル・アプリケーションについて
サンプルのXAアプリケーションでは、振込アプリケーションがXAトランザクションを作成して部門から部門への送金を開始するシナリオを実装しています。組織内の2つの部門は、部門1 (Dept 1)と部門2 (Dept 2)です。
MicroTxによってXAトランザクションが実装されます。XAトランザクション内では、すべてのアクション(引出しや預入れなど)が成功するか、いずれか1つ以上のアクションが失敗した場合にはすべてがロールバックされます。
次の図は、多言語参加側マイクロサービスで構成されるサンプルXAアプリケーション・デプロイメントを示しています。

- MicroTxコーディネータは、参加側サービス間のトランザクションを管理します。
- 振込マイクロサービスはトランザクションを開始するため、XAトランザクション・イニシエータ・サービスと呼ばれます。ユーザーは、このマイクロサービスとやり取りして、ある金額を部門1と部門2の間で送金します。新しいリクエストが作成されると、MicroTxライブラリで公開されるヘルパー・メソッドは、XAトランザクションに対して
begin()
メソッドを実行して、振込マイクロサービスでXAトランザクションを開始します。このマイクロサービスには、XAのコミット・コールおよびロールバック・コールを発行するビジネス・ロジックも含まれます。 - 部門1と部門2はトランザクションに参加するため、XA参加側サービスと呼ばれます。MicroTxライブラリには、参加側サービスがトランザクションに自動的に登録できるようにするヘッダーが含まれています。これらのマイクロサービスは、REST APIを公開して、口座残高を取得し、指定された口座で引出しまたは預入れを行います。また、リソース・マネージャのリソースも使用します。
リソース・マネージャは、データベース、キューイング・システム、メッセージング・システム、キャッシュなどのステートフル・リソースを管理します。
サービスはACID要件を満たす必要があるため、XAトランザクションが開始され、このトランザクションのコンテキストで引出しと預入れの両方が呼び出されます。
次のトピックでは、XAトランザクションにおいてマイクロサービスとMicroTxがどのように通信するかについて説明します。
- シナリオ: 一定金額の引出しおよび預入れ
次のステップでは、サンプル・アプリケーションを実行するときの、XAトランザクションの正常なパスのシーケンス例を示します。ここでは、部門1から一定金額を引き出して、その金額を部門2に預け入れするようにユーザーがリクエストするシナリオについて考えてみます。エラー時には、起動側アプリケーションがコミットのかわりにロールバックをコールします。
親トピック: サンプル・アプリケーションのデプロイ