RESTAsyncRequest および RESTAsyncResponse ノードを使用した REST API との非同期対話

メッセージ・フロー内の RESTAsyncRequest および RESTAsyncResponse ノードを使用して、REST 要求を作成し、応答を非同期に受信することができます。

このタスクの概要

待ち時間が長いバックエンド・サーバーを使用するとき、非同期の要求応答処理を使用することが望ましい場合があります。 同期処理の結果、バックエンド・サーバーへの同時接続を行うために多数のスレッドを必要とする多数の未解決の要求が発生する可能性があります。 非同期処理により、応答を要求から分離することができます。

RESTAsyncRequest ノードと RESTAsyncResponse ノードのペアを使用して、REST API と非同期で対話できます。 ペアのノードは、両方のノードに対して指定される固有 ID を使用して、応答を元の要求に対応させます。 実行グループ内の 1 つのノード・ペアのみ同じ固有 ID を所持できます。

RESTAsyncRequest ノードは、REST 要求を送信してから、応答を待たずにフローに制御を返します。 このアクションにより、要求スレッドが解放され、追加の要求が処理されます。一方、応答は、別のスレッド上の新しいトランザクション内のペアの RESTAsyncResponse ノードによって処理されます。 この非同期機能により、アウトバウンド要求が応答を待機する際にブロックされないため、複数のアウトバウンド要求をほぼ並行して実行できます。 RESTAsyncResponse ノードは、同じフローにあっても別のフローにあってもかまいませんが、ペアになっている要求ノードと同じ統合サーバーになければなりません。

タイムアウト・インターバルを指定すると、要求/応答操作全体が指定の期間よりも長くかかっている場合、いずれかのペア・ノードの Failure ターミナルに要求を伝搬させることができます。 タイムアウト間隔は、 RESTAsyncRequest ノードによって送信される要求で始まり、 RESTAsyncResponse ノードによって完全に受信される応答で終了する間隔に適用されます。

RESTAsyncRequest ノードは、処理する要求ごとに、接続を使用して要求を送信し、応答のためにペアの RESTAsyncResponse ノードに接続を渡します。 タイムアウト・インターバルが指定されている場合、インターバルが満了するとソケットが閉じられます。 このクローズにより、要求は正しい応答のみを取得し、タイムアウトになった要求の応答データは破棄されます。

要求/応答処理は、 RESTAsyncRequest ノードと RESTAsyncResponse ノードの間で分割されます。 処理の要求フェーズ中にタイムアウトが発生すると、要求と例外が RESTAsyncRequest ノードの Failure ターミナルに伝搬されます。 同様に、処理の応答フェーズ中にタイムアウトが発生すると、 RESTAsyncResponse ノードの Failure ターミナルに例外が伝搬されます。 ほとんどの場合、タイムアウトはサーバー応答を待機しているときに発生します。この場合は、 RESTAsyncResponse ノードの Failure ターミナルが使用されます。 まれなケースですが、要求ノードがサーバーにデータを送るときにタイムアウトが発生することもあります。 この場合、 RESTAsyncRequest ノードの Failure ターミナルが使用されます。

手順

以下のステップを実行して、Swagger 文書または OpenAPI 3.0 文書をインポートし、 RESTAsyncRequest ノードを構成します。

  1. RESTAsyncRequest ノードを組み込むためのメッセージ・フローを作成します。
    メッセージ・フローの作成について詳しくは、 メッセージ・フローの作成を参照してください。
  2. オプション: ステップ 3で REST 要求ノードを手動で構成する場合は、 REST API カタログにデータを取り込む必要があります。

    「アプリケーション開発」ビューの各プロジェクトには、 RESTRequest ノードおよび RESTAsyncRequest ノードで使用するためにプロジェクトで使用可能なすべての REST API のリストを含む 「REST API カタログ」 フォルダーがあります。 REST API カタログ 内の各 REST API フォルダーには、REST API で使用可能なすべての操作のリストが含まれています。 以下のステップを実行して、 REST API カタログ にデータを取り込みます。

    1. 「アプリケーション開発」ビューでプロジェクトまたはアプリケーションを右クリックし、 「インポート」を選択します。 あるいは、 「ファイル」 > 「インポート」を選択します。
    2. 「RESTAPI」 > RestAPI 定義 を選択して、 「RESTAPI 定義のインポート」 ダイアログを開きます。
    3. プロジェクト 」メニューからプロジェクトを選択するか、「 新規 」をクリックして新規プロジェクトを作成します。
    4. ワークスペースまたはファイル システムから OpenAPI ドキュメントを選択するか、 HTTP または HTTPS 使用して URL から OpenAPI ドキュメントを取得します
    5. 「次へ」 をクリックして、 「RESTAPI 定義のインポート」 ダイアログを開きます。
    6. 手順 d で選択した内容に応じて、ファイルシステムまたはワークスペース内のプロジェクトからファイルを選択するか、 URL を指定するよう求められます。
    7. インポートする RESTAPI の詳細を確認するには、 「次へ」 をクリックします。
    8. RESTAPI の詳細が正しい場合は、 「次へ」をクリックします。
    Swagger 文書または OpenAPI 3.0 文書が、 RESTRequest ノードを含むプロジェクトの REST API カタログ および 「その他のリソース」 フォルダーにコピーされ、「アプリケーション開発」ビューに表示されます。
  3. RESTAsyncRequest ノードをパレットからメッセージ・フロー・キャンバスにドラッグし、呼び出す操作が含まれているインポート済みの Swagger 文書または OpenAPI 3.0 文書を使用するように構成します。
    あるいは、 RESTAsyncRequest ノードをパレットからメッセージ・フロー内の 2 つの既存ノード間の接続にドラッグすることもできます。 RESTAsyncRequest ノードが、既存の 2 つのノード間のフローに挿入されます。

    ノードをキャンバスに配置すると、ウィザードにより、REST API および呼び出す操作の選択がガイドされます。 XPath または ESQL 式を使用して入力メッセージ・ツリーからデータを選択することにより、インポートされた Swagger 文書またはインポートされた OpenAPI 3.0 文書内の一連の操作から操作を選択し、ノード・プロパティーとしてパラメーター値を指定することができます。

    1. ウィザードの 「REST API で操作を呼び出す (Invoke an operation in a REST API)」 ページを使用して、使用する操作を含む Swagger 文書または OpenAPI 3.0 文書の場所を指定します。
      • 参照プロジェクトまたはファイル・システムから Swagger 文書または OpenAPI 3.0 文書を選択します

        このオプションを選択すると、ファイル・システム内のロケーションを指定したり、参照されるプロジェクトから Swagger 文書または OpenAPI 3.0 文書を選択したりすることができるウィンドウが表示されます。 ファイル・システムから Swagger 文書または OpenAPI 3.0 文書を選択すると、その文書は RESTAsyncRequest ノードを含むプロジェクトにコピーされます。

        参照されていない共有ライブラリーから Swagger 文書または OpenAPI 3.0 文書を使用する場合は、まず共有ライブラリーを参照してから、 RESTAsyncRequest ノードを追加する必要があります。

      • HTTP または HTTPS を使用して URL から Swagger 文書または OpenAPI 3.0 文書を取得する

        このオプションを選択すると、Swagger ドキュメントまたはドキュメントに URL を指定できるウィンドウが表示されます。 OpenAPI 3.0 ドキュメント。 このSwaggerドキュメントまたは OpenAPI 3.0 ドキュメントは、ノードを含むプロジェクトにダウンロードされ、保存されます。 RESTAsyncRequest ノードを含むプロジェクトに

      • 「REST 要求ノードを手動構成」

        RESTAsyncRequest ノードを変更せずにウィザードを閉じるには、このオプションを選択します。 その後、オプションで、ナビゲーションの REST API カタログ からメッセージ・フローの RESTAsyncRequest ノードに操作をドラッグすることができます。この操作は、その操作を使用するように自動的に構成されます。

    2. 前の手順で、 「参照プロジェクトまたはファイル システムから Swagger ドキュメントまたは OpenAPI 3.0 ドキュメントを選択する」または「 HTTP または HTTPS を使用して URL から Swagger ドキュメントまたは OpenAPI 3.0 ドキュメントを取得する」 のいずれかを選択した場合は、REST API で呼び出す操作を選択できるウィンドウが表示されます。 必要な操作を選択し、 「終了」をクリックします。 その RESTAsyncRequest ノードは、選択された操作を使用するように自動的に設定されます。
  4. RESTAsyncRequest ノードの残りのプロパティーを構成します。
    詳しくは、 RESTAsyncRequest ノードを参照してください。
  5. REST 要求への応答を処理するために、 RESTAsyncResponse ノードを追加します。 このノードは、同じフローに配置することも別のフローに配置することもできますが、同じ統合サーバーに配置する必要があります。
    詳しくは、 RESTAsyncResponse ノードを参照してください。
  6. mqsicredentials コマンド を使用して、REST API と対話するためのセキュリティー資格情報を構成します。 あるいは、 mqsisetdbparms コマンドを使用することもできます。
  7. ローカル環境の UserContext フォルダー内のデータを保管および取得することにより、 RESTAsyncRequest ノードを含むフローと RESTAsyncResponse ノードを含むフローとの間でデータを共有することができます。 要求フロー内でデータを OutputLocalEnvironment.Destination.REST.Request.UserContext の下に保管し、応答フロー内で LocalEnvironment.REST.Response.UserContext からデータを取り出すことができます。 例については、 REST ノードでのローカル環境変数の使用を参照してください。