7.2 複数のREST APIコールに対するOracle-Tmm-Tx-Tokenの伝播

アプリケーションのビジネス・ロジックが複数のAPIコールにまたがってトランザクションを完了する場合、複数のREST APIコールに対してOracle-Tmm-Tx-Tokenを伝播する必要があります。

この項では、アプリケーションのビジネス・ロジックが複数のAPIコールにまたがってトランザクションを完了するときに、Oracle_Tmm_Tx_Tokenトークンがどのように伝播されるかを説明します。YAMLファイルでtransactionTokenEnabledtrueに設定し、アプリケーションのビジネス・ロジックがトランザクションを完了するために複数の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を含めて、予約の確定または取消を行う必要があります。

次のステップでは、MicroTxOracle_Tmm_Tx_Tokenトランザクション・トークンを作成して最初のコールに伝播する方法と、ユーザーによる後続のAPIコールにOracle_Tmm_Tx_Tokenを含める方法について説明します。

  1. ユーザーがトランザクションを開始すると、トランザクション・イニシエータ・サービスがMicroTxにリクエストを送信します。
  2. MicroTxはトランザクション・イニシエータに応答し、レスポンス・ヘッダーでOracle_Tmm_Tx_Tokenを返します。

    MicroTxライブラリは、指定した秘密キーと公開キーのペアに基づいてこのトークンを作成します。ユーザーがOracle_Tmm_Tx_Tokenトランザクションを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。

    MicroTxは、複数のヘッダーおよびトークンを使用して動作します。わかりやすくするために、この項ではOracle_Tmm_Tx_Tokenトランザクション・トークンについてのみ説明します。

  3. 参加側サービスからトランザクション・コーディネータへのコールを保護するため、MicroTxライブラリは、後続のすべてのコールのリクエスト・ヘッダーにOracle_Tmm_Tx_Tokenを渡します。
  4. MicroTxは、ユーザーからの最初のコールに応答する際に、レスポンス・ヘッダーでOracle_Tmm_Tx_Tokenを返します。レスポンス・ヘッダーからOracle_Tmm_Tx_Tokenの値を取得します。
  5. ユーザーが行う後続のすべてのAPIコールで、Oracle_Tmm_Tx_Tokenをリクエスト・ヘッダーに手動で含める必要があります。前のステップで取得した値を指定します。

こうすると確実にユーザーによる複数のAPIコールが結び付けられ、すべてのコールが1つのトランザクションの一部と見なされます。