Gespreksfrequentie per abonnement beperken

VAN TOEPASSING OP: Alle API Management-lagen

Het rate-limit beleid voorkomt pieken in API-gebruik per abonnement door de aanroepsnelheid te beperken tot een opgegeven nummer per opgegeven periode. Wanneer de oproepsnelheid wordt overschreden, ontvangt de beller een 429 Too Many Requests antwoordstatuscode.

Zie Frequentielimieten en quota voor meer informatie over het verschil tussen frequentielimieten en quota .

Let op

Vanwege de gedistribueerde aard van de beperkingsarchitectuur is snelheidsbeperking nooit volledig nauwkeurig. Het verschil tussen geconfigureerde aanvragen en het werkelijke aantal toegestane aanvragen varieert op basis van aanvraagvolume en -frequentie, back-endlatentie en andere factoren.

Notitie

Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Meer informatie over het instellen of bewerken van API Management-beleid.

Beleidsinstructie

<rate-limit calls="number" renewal-period="seconds"  retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-calls-header-name="header name"  
        remaining-calls-variable-name="policy expression variable name"
        total-calls-header-name="header name">
    <api name="API name" id="API id" calls="number" renewal-period="seconds" >
        <operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
    </api>
</rate-limit>

Kenmerken

Kenmerk Beschrijving Vereist Standaardinstelling
Oproepen Het maximum aantal aanroepen dat is toegestaan tijdens het tijdsinterval dat is opgegeven in renewal-period. Beleidsexpressies zijn niet toegestaan. Ja N.v.t.
verlengingsperiode De lengte in seconden van het schuifvenster waarin het aantal toegestane aanvragen niet groter mag zijn dan de waarde die is opgegeven in calls. Maximaal toegestane waarde: 300 seconden. Beleidsexpressies zijn niet toegestaan. Ja N.v.t.
naam na koptekst opnieuw proberen De naam van een aangepaste antwoordheader waarvan de waarde het aanbevolen interval voor opnieuw proberen is in seconden nadat de opgegeven aanroepsnelheid is overschreden. Beleidsexpressies zijn niet toegestaan. Nee Retry-After
naam na variabele opnieuw proberen De naam van een variabele waarin het aanbevolen interval voor opnieuw proberen wordt opgeslagen in seconden nadat de opgegeven gespreksfrequentie is overschreden. Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
resterende aanroepen-header-naam De naam van een antwoordheader waarvan de waarde na elke beleidsuitvoering het aantal resterende aanroepen is dat is toegestaan voor het tijdsinterval dat is opgegeven in de renewal-period. Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
resterende aanroepen-variabele-naam De naam van een variabele die na elke beleidsuitvoering het aantal resterende aanroepen opslaat dat is toegestaan voor het tijdsinterval dat is opgegeven in de renewal-period. Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
total-calls-header-name De naam van een antwoordheader waarvan de waarde de waarde is die is opgegeven in calls. Beleidsexpressies zijn niet toegestaan. Nee N.v.t.

Elementen

Element Beschrijving Vereist
api Voeg een of meer van deze elementen toe om een aanroepfrequentielimiet op te leggen voor API's binnen het product. Frequentielimieten voor product- en API-aanroepen worden onafhankelijk toegepast. Er kan naar de API worden verwezen via name of id. Als beide kenmerken worden opgegeven, id worden deze gebruikt en name genegeerd. Nee
schakelapparatuur optimaliseren Voeg een of meer van deze elementen toe om een aanroepfrequentielimiet op te leggen voor bewerkingen binnen een API. Limieten voor gespreksfrequenties voor producten, API's en bewerkingen worden onafhankelijk toegepast. Er kan naar een bewerking worden verwezen via name of id. Als beide kenmerken worden opgegeven, id worden deze gebruikt en name genegeerd. Nee

API-kenmerken

Kenmerk Beschrijving Vereist Standaardinstelling
naam De naam van de API waarvoor de frequentielimiet moet worden toegepast. id Of name moet worden opgegeven. N.v.t.
id De id van de API waarvoor de frequentielimiet moet worden toegepast. id Of name moet worden opgegeven. N.v.t.
Oproepen Het maximum aantal aanroepen dat is toegestaan tijdens het tijdsinterval dat is opgegeven in renewal-period. Beleidsexpressies zijn niet toegestaan. Ja N.v.t.
verlengingsperiode De lengte in seconden van het schuifvenster waarin het aantal toegestane aanvragen niet groter mag zijn dan de waarde die is opgegeven in calls. Maximaal toegestane waarde: 300 seconden. Beleidsexpressies zijn niet toegestaan. Ja N.v.t.

bewerkingskenmerken

Kenmerk Beschrijving Vereist Standaardinstelling
naam De naam van de bewerking waarvoor de frequentielimiet moet worden toegepast. id Of name moet worden opgegeven. N.v.t.
id De id van de bewerking waarvoor de frequentielimiet moet worden toegepast. id Of name moet worden opgegeven. N.v.t.
Oproepen Het maximum aantal aanroepen dat is toegestaan tijdens het tijdsinterval dat is opgegeven in renewal-period. Beleidsexpressies zijn niet toegestaan. Ja N.v.t.
verlengingsperiode De lengte in seconden van het schuifvenster waarin het aantal toegestane aanvragen niet groter mag zijn dan de waarde die is opgegeven in calls. Maximaal toegestane waarde: 300 seconden. Beleidsexpressies zijn niet toegestaan. Ja N.v.t.

Gebruik

Gebruiksnotities

  • Dit beleid kan slechts eenmaal per beleidsdefinitie worden gebruikt.
  • Dit beleid wordt alleen toegepast wanneer een API wordt geopend met behulp van een abonnementssleutel.
  • Frequentielimietaantallen in een zelf-hostende gateway kunnen worden geconfigureerd om lokaal te synchroniseren (tussen gateway-exemplaren tussen clusterknooppunten), bijvoorbeeld via implementatie van Helm-grafieken voor Kubernetes of met behulp van de Azure Portal-implementatiesjablonen. Frequentielimieten worden echter niet gesynchroniseerd met andere gatewayresources die zijn geconfigureerd in het API Management-exemplaar, inclusief de beheerde gateway in de cloud. Meer informatie

Opmerking

In het volgende voorbeeld is de frequentielimiet per abonnement 20 aanroepen per 90 seconden. Na elke beleidsuitvoering worden de resterende aanroepen die zijn toegestaan in de periode, opgeslagen in de variabele remainingCallsPerSubscription.

<policies>
    <inbound>
        <base />
        <rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Zie voor meer informatie over het werken met beleid: