Partage via


Wait

S’APPLIQUE À : Tous les niveaux de Gestion des API

La stratégie wait exécute ses stratégies enfants immédiates en parallèle et attend la fin de la totalité ou de l’une de ses stratégies enfants immédiates pour se terminer. La stratégie wait peut avoir une ou plusieurs des stratégies suivantes comme stratégies enfants immédiates : send-request, cache-lookup-value et choose.

Notes

Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.

Instruction de la stratégie

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

Attributs

Attribut Description Obligatoire Default
for Détermine si la stratégie wait attend la fin de toutes les stratégies enfants immédiates ou d’une seule. Les valeurs autorisées sont les suivantes :

- all : attend la fin de toutes les stratégies enfants immédiates.
- any : attend la fin d’une stratégie enfant immédiate. Une fois la première stratégie enfant immédiate terminée, la stratégie wait se termine et l’exécution de toutes les autres stratégies enfants immédiates est arrêtée.

Les expressions de stratégie sont autorisées.
Non all

Éléments

Ne peut contenir comme éléments enfants que les stratégies send-request, cache-lookup-value et choose.

Utilisation

Exemple

Dans l’exemple suivant, deux stratégies choose sont les stratégies enfants immédiates de la stratégie wait. Ces deux stratégies choose s’exécutent en parallèle. Chaque stratégie choose essaie de récupérer une valeur en cache. En cas d’échec de cache, un service principal est appelé pour fournir la valeur. Dans cet exemple, la stratégie wait ne se termine pas tant que toutes ses stratégies enfants immédiates ne sont pas terminées, car l’attribut for a la valeur all. Dans cet exemple, les variables de contexte (execute-branch-one, value-one, execute-branch-two et value-two) sont déclarées hors de l’étendue de cet exemple de stratégie.

<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>

Pour plus d’informations sur l’utilisation des stratégies, consultez :