Wait

適用対象: すべての API Management レベル

wait ポリシーは、直接の子ポリシーを並列で実行し、その直接の子ポリシーのすべてまたはいずれかが完了するまで完了を待機します。 wait ポリシーは、直接の子ポリシーとして、send-requestcache-lookup-valuechoose ポリシーの 1 つ以上を持つことができます。

Note

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。

ポリシー ステートメント

<wait for="all | any">
  <!--Wait policy can contain send-request, cache-lookup-value,
        and choose policies as child elements -->
</wait>

属性

属性 説明 必要 Default
対象 wait ポリシーがすべての直接の子ポリシーが完了するまで待機するか、1 つが完了するまで待機するかを決定します。 使用できる値は、以下のとおりです。

- all - すべての直接の子ポリシーが完了するまで待機します。
- any - いずれかの直接の子ポリシーが完了するまで待機します。 最初の直接の子ポリシーが完了すると、wait ポリシーが完了し、他の直接の子ポリシーの実行が終了します。

ポリシー式を使用できます。
No all

要素

send-request ポリシー、cache-lookup-value ポリシー、および choose ポリシーのみを子要素として含めることができます。

使用

次の例では、wait ポリシーの直接の子ポリシーとして 2 つの choose ポリシーがあります。 これらの choose ポリシーはそれぞれ並列に実行されます。 各 choose ポリシーは、キャッシュされた値を取得しようとします。 キャッシュ ミスがある場合は、バックエンド サービスが呼び出されて値を提供します。 この例では、for 属性が all に設定されているため、すべての直接の子ポリシーが完了するまで、wait ポリシーは完了しません。 この例のコンテキスト変数 (execute-branch-onevalue-oneexecute-branch-two、および value-two) は、このサンプル ポリシーのスコープ外で宣言されています。

<wait for="all">
  <choose>
    <when condition="@((bool)context.Variables["execute-branch-one="])">
      <cache-lookup-value key="key-one" variable-name="value-one" />
      <choose>
        <when condition="@(!context.Variables.ContainsKey("value-one="))">
          <send-request mode="new" response-variable-name="value-one">
            <set-url>https://backend-one</set-url>
            <set-method>GET</set-method>
          </send-request>
        </when>
      </choose>
    </when>
  </choose>
  <choose>
    <when condition="@((bool)context.Variables["execute-branch-two="])">
      <cache-lookup-value key="key-two" variable-name="value-two" />
      <choose>
        <when condition="@(!context.Variables.ContainsKey("value-two="))">
          <send-request mode="new" response-variable-name="value-two">
            <set-url>https://backend-two</set-url>
            <set-method>GET</set-method>
          </send-request>
        </when>
      </choose>
    </when>
  </choose>
</wait>

ポリシーに対する処理の詳細については、次のトピックを参照してください。