Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


2.2.9 先行プリペア機能の使用(SQL-Participant限定)

先行プリペア機能を使用するアプリケーションの開発方法について説明します。

先行プリペア機能を使用するアプリケーションは、Orchestrator、Entity-Serviceで実装してください。

先行プリペア機能を使用する場合、トランザクションを伝搬する際にアプリケーションがHMP-PCTOが提供するインタフェースを使用して、HTTPヘッダを追加します。

〈この項の構成〉

(1) ライブラリの組み込み

先行プリペア機能を使用する場合に組み込むライブラリは、トランザクションの伝搬に使用するライブラリと同じです。ライブラリについては、「2.2.7 トランザクションの伝搬」を参照してください。

(2) コーディング例

先行プリペア機能を使用する際に追加するHTTPヘッダ名と値は、XidHeadersインタフェースで提供します。ヘッダ名はXidHeaders.IS_LAST_CALL、値はXidHeaders.TRUEです。これをEntity-Service呼び出し時に追加してください。トランザクションの伝搬に使用するクライアントごとに追加する例を次に示します。

(a) Spring FrameworkのRestTemplateを使用する場合

RequestEntity<MyRequest> request = RequestEntity               // エンティティ作成
     .post("https://example.com/{foo}", "bar")
     .header(XidHeaders.IS_LAST_CALL, XidHeaders.TRUE)         // 先行プリペアヘッダ追加
     .body(body);

(b) HMP-ADIFのISCコマンド(ImperativeかつREST通信)を使用する場合

IscImperativeCreateCommandBuilder<?,?> request = Isc.create()  // ISCコマンド作成
      .on("sample")
      .using("samplePath")
      .header(XidHeaders.IS_LAST_CALL, XidHeaders.TRUE)        // 先行プリペアヘッダ追加
      .data(payload);

(3) エラーハンドリング

先行プリペア機能の使用によって、アプリケーションでエラーハンドリングが必要なエラーが発生することはありません。