Wait

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API

Политика wait параллельно выполняет свои непосредственные дочерние политики и ожидает выполнения всех или одной из них, прежде чем будет завершена. Политика wait может иметь в качестве немедленной дочерней политики одну или несколько следующих политик: send-request, cache-lookup-valueи choose политики.

Примечание.

Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.

Правило политики

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

Атрибуты

Атрибут Description Обязательное поле По умолчанию.
для Определяет, ожидает ли политика wait завершения всех непосредственных дочерних политик или только одной. Допустимые значения:

—- all: ожидание завершения всех непосредственных дочерних политик;
- any — дождитесь завершения любой немедленной дочерней политики. После завершения первой непосредственной дочерней политики политика wait завершается и прерывает выполнение других непосредственных дочерних политик.

Допустимы выражения политики.
No all

Элементы

Может содержать в качестве дочерних элементов только политики send-request, cache-lookup-value и choose.

Использование

Пример

В следующем примере две политики choose являются непосредственными дочерними политиками политики wait. Каждая из этих политик choose выполняется в параллельном режиме. Каждая политика choose пытается извлечь кэшированное значение. В случае промаха кэша для получения значения вызывается внутренняя служба. В этом примере политика wait не завершается, пока не завершатся все ее непосредственные дочерние политики, так как атрибут for имеет значение all. В этом примере переменные контекста (execute-branch-one, value-one, execute-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>

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.