1.3.1 XAトランザクション・プロトコル
XAを使用するアプリケーションは、トランザクションの境界を設定する必要があります。MicroTxがトランザクションをコミットまたはロールバックします。
XAプロトコルで、参加側マイクロサービスは、MicroTxクライアント・ライブラリを使用する必要があります。これが、コールバックを登録して、リソース・マネージャのためにコールバックの実装を提供します。次の図に示すように、MicroTxはリソース・マネージャと通信して、トランザクションをコミットまたはロールバックします。MicroTxは、トランザクションに関係する各リソース・マネージャに接続して、トランザクションを準備、コミットまたはロールバックします。参加側サービスは、リソース・マネージャにアクセスするための資格証明をコーディネータに提供します。次の図に示すように、MicroTxクライアント・ライブラリによってリソース・マネージャ・プロキシ(RMプロキシ)が提供されます。このプロキシにより、コーディネータがリソース・マネージャ固有のライブラリを保持する必要がなくなります。これはXAでは通常のケースです。トランザクション・コーディネータが、参加側のリソース・マネージャのために、トランザクションの準備、コミットまたはロールバックを行う必要がある場合は、マイクロサービスにコールバックを行います。さらに、プロキシが、そのマイクロサービスによって使用されているリソース・マネージャにリクエストをリレーします。このようなRESTベースのコールバックにより、トランザクション・コーディネータが、マイクロサービスで使用されるリソース・マネージャの影響を受けなくなります。

- イニシエータが分散トランザクションを開始します
- コールされたマイクロサービスがトランザクションに登録されます
- イニシエータが、トランザクション・マネージャにトランザクションのコミットまたはロールバックを依頼します
- イニシエータがコミットを決定した場合、トランザクション・マネージャは各マイクロサービスに準備を依頼します
- すべての参加側の準備が正常に行われると、すべての参加側がコミットを依頼されます
- いずれかの参加側の準備が失敗すると、すべての参加側がロールバックを依頼されます
- イニシエータがロールバックを決定した場合、トランザクション・マネージャは各マイクロサービスにロールバックを依頼します
親トピック: 分散トランザクション・プロトコルについて