9.7.1 トランザクション・イニシエータとしてのNode.jsアプリケーションの構成

  1. Node.jsのMicroTxライブラリをpackage.jsonファイルに依存関係として追加します。
    "dependencies": {
        "@oracle/microtx": "<version>"
      }

    ここで、<version>は、Node.jsのMicroTxライブラリの最新バージョンです。

  2. MicroTxライブラリのプロパティ値を構成します。ライブラリ・プロパティの構成を参照してください。
  3. Node.jsアプリケーションのロギングを有効にするには、追加のプロパティを設定する必要があります。「MicroTx Node.jsライブラリのログの有効化」を参照してください。
  4. プロパティ値を定義したtmm.propertiesファイルを渡して、マイクロサービスのMicroTxライブラリ・プロパティを構成します。
    TrmConfig.init('./tmm.properties');
  5. MicroTxライブラリおよびexpressモジュール・ファイルをインポートします。
    import {HttpMethod, TrmConfig} from "@oracle/microtx/util/trmutils";
    import {TCCConfig} from "@oracle/microtx/tcc/tcc";
    import {NextFunction, request, Request, Response, Router} from 'express';
  6. ルーター・オブジェクトを作成します。
    次のコードを使用して、svcRouterという名前のルーター・オブジェクトを作成します。
    const svcRouter = Router();
  7. 次のコードを追加して、トランザクション・イニシエータ・サービスのRESTエンドポイントのTCCConfigオブジェクトを初期化します。トランザクション・イニシエータによって多数のREST APIエンドポイントが公開されることがありますが、TCCConfigオブジェクトを初期化する必要があるのは、TCCトランザクションに参加する必要があるREST APIエンドポイントのみです。

    次のコード・サンプルでは、トランザクション・イニシエータ・アプリケーションは/bookings REST APIエンドポイントを公開しています。

    // Initialize TCCConfig object for all the endpoints which need to participant in the TCC transaction.
    const tccConfig: TCCConfig = new TCCConfig("/bookings", svcRouter, HttpMethod.POST, 30);

    説明

    • svcRouterは、前のステップで作成したルーター・オブジェクトです。
    • 30は、トランザクション・イニシエータ・アプリケーションがリソースを予約する時間制限(秒)です。期間は整数で指定します。期限切れになった後でリソースを解放してTCCトランザクションのその部分を取り消すために必要なコードを用意するのは、アプリケーション開発者の責任です。業務要件に基づいて期限を決めてください。

    これらの値は、ご使用の環境に固有の値で置き換えてください。

    このコードを実行すると、TCCトランザクションが開始され、MicroTxによって、指定したREST APIエンドポイントからのすべての送信リクエストのヘッダーが追加されます。

MicroTxライブラリを使用するサンプルNode.jsトランザクション・イニシエータ・アプリケーションのソース・コードは、microtx-samples GitHubリポジトリにあるtravelagent.tsファイルにあります。これは、MicroTxライブラリとアプリケーションの統合時に参照として使用できます。