Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 conditionfalse ki nem merül, vagy újrapróbálkoznak count .
A retry szabályzat gyermekelemként bármilyen más szabályzatot tartalmazhat, kivéve a szabályzatot wait .
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 |
| intervallum | 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
intervalmegadott é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
intervalazokatdeltaadja 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 megadottmax-intervalésdeltaexponenciá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
intervaldeltamindkettő 10 másodpercre van állítva, ésmax-interval100 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 gyermekelemként bármilyen más szabályzatot tartalmazhat, kivéve a szabályzatot wait .
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
Használati megjegyzések
- A házirend végrehajtja a gyermekházirendeket a
retryblokkban, mielőtt kiértékeli azconditionelső újrapróbálkozási kísérlet végrehajtását.
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 ignore-error értéket kell beállítaniaresponse-variable-name.
<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>
Háttérrendszer váltása hiba esetén
Az alábbi példában a kezdeti kérés az elsődleges háttérrendszerbe lesz elküldve.
429 Too Many Requests Válaszállapot-kód visszaadása esetén a rendszer azonnal újrapróbálkozza a kérést, és továbbítja a másodlagos háttérrendszernek.
<backend>
<retry
condition="@(context.Response != null && context.Response.StatusCode == 429)"
count="1"
interval="1"
first-fast-retry="true">
<set-variable name="attempt-count" value="@(context.Variables.GetValueOrDefault<int>("attempt-count", 0)+1)" />
<set-backend-service backend-id="@(context.Variables.GetValueOrDefault<int>("attempt-count") < 2 ? "primary-backend" : "secondary-backend" )" />
<forward-request />
</retry>
</backend>
Jótanács
Alternatív megoldásként konfigurálhat egy háttérerőforrást áramkör-megszakító szabályokkal a hibaállapotok észleléséhez, valamint egy elosztott terhelésű készletet, amely a kéréseket több háttérrendszer között osztja el.
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
- Policy-minták adattára
- Azure API Management irányelvek eszköztára
- A Copilot segítségével szabályzatokat hozhat létre, magyarázhat el és háríthat el hibákat.