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 ノードを構成します。