7.2 複数のREST APIコールに対するOracle-Tmm-Tx-Token
の伝播
アプリケーションのビジネス・ロジックが複数のAPIコールにまたがってトランザクションを完了する場合、複数のREST APIコールに対してOracle-Tmm-Tx-Token
を伝播する必要があります。
この項では、アプリケーションのビジネス・ロジックが複数のAPIコールにまたがってトランザクションを完了するときに、Oracle_Tmm_Tx_Token
トークンがどのように伝播されるかを説明します。YAMLファイルでtransactionTokenEnabled
をtrue
に設定し、アプリケーションのビジネス・ロジックがトランザクションを完了するために複数のAPIコールにまたがる場合、Oracle_Tmm_Tx_Token
の値を取得し、ユーザーが行う後続のすべてのAPIコールのリクエスト・ヘッダーでそれを渡す必要があります。
アプリケーションのビジネス・ロジックがトランザクション全体を完了するためにユーザーによる1つのAPIコールしか必要ない場合、これらのステップはスキップしてください。アプリケーションのビジネス・ロジックでユーザーによる1つのAPIコールしか必要がないときにOracle_Tmm_Tx_Token
トークンがどのように伝播されるかを理解するには、「Oracle_Tmm_Tx_Tokenトランザクション・トークンについて」を参照してください。
旅行予約アプリケーションについて考えてみますが、これにはユーザーによる2つのコールが必要です。最初のコールは、トランザクションを開始して、暫定的な予約を行います。アプリケーションでは、予約を確定または取り消すために、ユーザーによる2番目のAPIコールが必要です。このようなシナリオで、アプリケーションのビジネス・ロジックが1つのトランザクションを完了するためにユーザーによる複数のAPIコールにまたがるときは、ユーザーによる後続のAPIコールのリクエスト・ヘッダーにOracle_Tmm_Tx_Token
を含めて、予約の確定または取消を行う必要があります。
次のステップでは、MicroTxがOracle_Tmm_Tx_Token
トランザクション・トークンを作成して最初のコールに伝播する方法と、ユーザーによる後続のAPIコールにOracle_Tmm_Tx_Token
を含める方法について説明します。
- ユーザーがトランザクションを開始すると、トランザクション・イニシエータ・サービスがMicroTxにリクエストを送信します。
- MicroTxはトランザクション・イニシエータに応答し、レスポンス・ヘッダーで
Oracle_Tmm_Tx_Token
を返します。MicroTxライブラリは、指定した秘密キーと公開キーのペアに基づいてこのトークンを作成します。ユーザーが
Oracle_Tmm_Tx_Token
トランザクションを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。MicroTxは、複数のヘッダーおよびトークンを使用して動作します。わかりやすくするために、この項では
Oracle_Tmm_Tx_Token
トランザクション・トークンについてのみ説明します。 - 参加側サービスからトランザクション・コーディネータへのコールを保護するため、MicroTxライブラリは、後続のすべてのコールのリクエスト・ヘッダーに
Oracle_Tmm_Tx_Token
を渡します。 - MicroTxは、ユーザーからの最初のコールに応答する際に、レスポンス・ヘッダーで
Oracle_Tmm_Tx_Token
を返します。レスポンス・ヘッダーからOracle_Tmm_Tx_Token
の値を取得します。 - ユーザーが行う後続のすべてのAPIコールで、
Oracle_Tmm_Tx_Token
をリクエスト・ヘッダーに手動で含める必要があります。前のステップで取得した値を指定します。
こうすると確実にユーザーによる複数のAPIコールが結び付けられ、すべてのコールが1つのトランザクションの一部と見なされます。
親トピック: LRAでのアプリケーションの開発