Condividi tramite


Wait.

SI APPLICA A: Tutti i livelli di Gestione API

Il criterio wait esegue i criteri figlio immediati in parallelo e attende che tutti o uno dei relativi criteri figlio immediati vengano completati prima di terminare la sua attività. I criteri wait possono avere come criteri figlio immediati uno o più dei criteri seguenti: send-request, cache-lookup-valuee choose.

Nota

Impostare gli elementi e gli elementi figlio del criterio nell'ordine specificato nell'istruzione del criterio. Altre informazioni su come impostare o modificare i criteri di API Management.

Istruzione del criterio

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

Attributi

Attributo Descrizione Richiesto Valore predefinito
for Determina se il criterio wait attende il completamento di tutti o solo uno dei criteri figlio immediati. I valori consentiti sono i seguenti:

- all: consente di attendere il completamento di tutti i criteri figlio immediati
- any: consente di attendere il completamento di uno dei criteri figlio immediati. Dopo il completamento del primo criterio figlio immediato, il criterio wait si completa e l'esecuzione di qualsiasi altro criterio figlio immediato viene arrestata.

Le espressioni di criteri sono consentite.
No all

Elementi

Può contenere come elementi figlio solo i criteri send-request, cache-lookup-value e choose.

Utilizzo

Esempio

L'esempio seguente contiene due criteri choose come criteri figlio immediato dei criteri wait. Ognuno di questi criteri choose viene eseguito in parallelo. Ogni criterio choose tenta di recuperare un valore memorizzato nella cache. Se si verifica un mancato riscontro nella cache, viene chiamato un servizio di back-end per fornire il valore. In questo esempio il criterio wait non si completa fino al completamento di tutti i relativi criteri figlio immediati, poiché l'attributo for è impostato su all. In questo esempio le variabili di contesto (execute-branch-one, value-one, execute-branch-two e value-two) vengono dichiarate all'esterno dell'ambito di questo criterio di esempio.

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

Per ulteriori informazioni sull'utilizzo dei criteri, vedere: