Megosztás a következőn keresztül:


Ismét

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

A retry házirend egyszer végrehajtja a gyermekházirendeket, majd újrapróbálkozza a végrehajtást, amíg az újrapróbálkozás condition false ki nem merül, vagy újrapróbálkoznak count .

Feljegyzés

Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.

Szabályzatutasítás

<retry
    condition="Boolean expression or literal"
    count="number of retry attempts"
    interval="retry interval in seconds"
    max-interval="maximum retry interval in seconds"
    delta="retry interval delta in seconds"
    first-fast-retry="boolean expression or literal">
        <!-- One or more child policies. No restrictions. -->
</retry>

Attribútumok

Attribútum Leírás Kötelező Alapértelmezett
feltétel Logikai. Megadja, hogy az újrapróbálkozások leállítása (false) vagy folytatása (true). A szabályzatkifejezések engedélyezettek. Igen n/a
darabszám Egy 1 és 50 közötti pozitív szám, amely megadja a megkísérlendő újrapróbálkozási kísérletek számát. A szabályzatkifejezések engedélyezettek. Igen n/a
interval Az újrapróbálkozási kísérletek közötti várakozási időközt megadva pozitív szám másodpercben. A szabályzatkifejezések engedélyezettek. Igen n/a
maximális időköz Pozitív szám másodpercben, amely megadja az újrapróbálkozási kísérletek közötti maximális várakozási időközt. Exponenciális újrapróbálkozási algoritmus implementálásához használatos. A szabályzatkifejezések engedélyezettek. Nem N.A.
delta A várakozási időköz növekményét meghatározó pozitív szám másodpercben. A lineáris és exponenciális újrapróbálkozási algoritmusok implementálásához használatos. A szabályzatkifejezések engedélyezettek. Nem N.A.
első gyors újrapróbálkozás Logikai. Ha be van trueállítva, a rendszer azonnal végrehajtja az első újrapróbálkozási kísérletet. A szabályzatkifejezések engedélyezettek. Nem false

Várakozási idő újrapróbálkozás

  • Ha csak a interval megadott érték van megadva, rögzített időközönkénti újrapróbálkozási műveletek lesznek végrehajtva.

  • Ha csak a megadott és delta azokat interval adja meg, a rendszer lineáris intervallum-újrapróbálkozási algoritmust használ. Az újrapróbálkozések közötti várakozási idő a következő képlet szerint nő: interval + (count - 1)*delta.

  • intervalA megadott max-interval és delta exponenciális intervallum-újrapróbálkozási algoritmus alkalmazásakor a rendszer egy exponenciális intervallum-újrapróbálkozási algoritmust alkalmaz. Az újrapróbálkozási műveletek közötti várakozási idő exponenciálisan nő a következő képlet szerint: interval + (2^count - 1) * random(delta * 0.8, delta * 1.2), legfeljebb a megadott maximális időközig max-interval.

    Ha például interval delta mindkettő 10 másodpercre van állítva, és max-interval 100 másodperc, az újrapróbálkozások közötti hozzávetőleges várakozási idő a következőképpen nő: 10 másodperc, 20 másodperc, 40 másodperc, 80 másodperc, és a fennmaradó újrapróbálkozásokhoz 100 másodperc várakozási idő szükséges.

Elemek

A retry szabályzat bármilyen más házirendet tartalmazhat gyermekelemként.

Használat

Példák

Kérelemtovábbítás exponenciális újrapróbálkozással

Az alábbi példában a kéréstovábbítást egy exponenciális újrapróbálkozási algoritmus használatával akár tízszer is újrapróbálkozza a rendszer. Mivel first-fast-retry a beállítás értéke false, az újrapróbálkozási kísérletek száma exponenciálisan növekszik (ebben a példában körülbelül 10 másodperc, 20 másodperc, 40 másodperc, ...), legfeljebb egy maximális várakozási max-intervalidőig.

<retry
    condition="@(context.Response.StatusCode == 500)"
    count="10"
    interval="10"
    max-interval="100"
    delta="10"
    first-fast-retry="false">
        <forward-request buffer-request-body="true" />
</retry>

Kérés küldése kezdeti kérelemhiba esetén

Az alábbi példában a rendszer a megadott háttérrendszeren kívüli URL-címre küld egy kérést legfeljebb háromszor, ha a kapcsolat megszakad/időtúllépést okoz, vagy a kérés kiszolgálóoldali hibát eredményez. Mivel first-fast-retry igaz értékre van állítva, az első újrapróbálkozást a rendszer azonnal végrehajtja a kezdeti kéréshiba után. Vegye figyelembe, hogy send-request hiba esetén a null értékhez igaz response-variable-name értéket kell beállítaniaignore-error.


<retry
    condition="@(context.Variables["response"] == null || ((IResponse)context.Variables["response"]).StatusCode >= 500)"
    count="3"
    interval="1"
    first-fast-retry="true">
        <send-request 
            mode="new" 
            response-variable-name="response" 
            timeout="3" 
            ignore-error="true">
		        <set-url>https://api.contoso.com/products/5</set-url>
		        <set-method>GET</set-method>
		</send-request>
</retry>

A szabályzatok használatával kapcsolatos további információkért lásd: