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
azokatinterval
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
.interval
A megadottmax-interval
ésdelta
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özigmax-interval
.Ha például
interval
delta
mindkettő 10 másodpercre van állítva, ésmax-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
- Szabályzatszakaszok: bejövő, kimenő, háttérrendszer, hiba
- Szabályzathatókörök: globális, munkaterület, termék, API, művelet
- Átjárók: klasszikus, v2, használat, saját üzemeltetésű, munkaterület
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-interval
idő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>
Kapcsolódó szabályzatok
Kapcsolódó tartalom
A szabályzatok használatával kapcsolatos további információkért lásd:
- Oktatóanyag: AZ API átalakítása és védelme
- Szabályzathivatkozás a szabályzatutasságok és azok beállításainak teljes listájához
- Házirend-kifejezések
- Házirendek beállítása vagy szerkesztése
- Szabályzatkonfigurációk újrafelhasználása
- Szabályzatrészletek adattára
- Azure API Management policy toolkit
- Szabályzatok létrehozása a Microsoft Copilot használatával az Azure-ban