Beleid voor opnieuw proberen implementeren met JavaScript of TypeScript
Elke toepassing die in de cloud wordt uitgevoerd of communiceert met externe services en resources, moet tijdelijke fouten kunnen afhandelen. Het is gebruikelijk dat deze toepassingen fouten ondervinden vanwege een tijdelijk verlies van netwerkconnectiviteit, een time-out van aanvragen wanneer een service of resource bezet is of andere factoren. Ontwikkelaars moeten toepassingen bouwen om tijdelijke fouten transparant af te handelen om de stabiliteit en tolerantie te verbeteren.
In dit artikel leert u hoe u de Azure Storage-clientbibliotheek voor JavaScript gebruikt om een beleid voor opnieuw proberen te configureren voor een toepassing die verbinding maakt met Azure Blob Storage. Beleid voor opnieuw proberen definieert hoe de toepassing mislukte aanvragen verwerkt en moet altijd worden afgestemd op de bedrijfsvereisten van de toepassing en de aard van de fout.
Opties voor opnieuw proberen configureren
Beleid voor opnieuw proberen voor Blob Storage wordt programmatisch geconfigureerd en biedt controle over hoe opties voor opnieuw proberen worden toegepast op verschillende serviceaanvragen en scenario's. Een web-app die aanvragen uitgeeft op basis van gebruikersinteractie kan bijvoorbeeld een beleid implementeren met minder nieuwe pogingen en kortere vertragingen om de reactiesnelheid te verhogen en de gebruiker op de hoogte te stellen wanneer er een fout optreedt. Een app of onderdeel waarop batchaanvragen op de achtergrond worden uitgevoerd, kan ook het aantal nieuwe pogingen verhogen en een exponentiële uitstelstrategie gebruiken om de aanvraagtijd te laten voltooien.
De volgende tabel bevat de parameters die beschikbaar zijn bij het maken van een StorageRetryOptions-exemplaar , samen met het type, een korte beschrijving en de standaardwaarde als u geen wijzigingen aanbrengt. U moet proactief zijn bij het afstemmen van de waarden van deze eigenschappen om te voldoen aan de behoeften van uw app.
Eigenschap | Type | Description | Default value |
---|---|---|---|
maxRetryDelayInMs |
number |
Optioneel. Hiermee geeft u de maximale vertraging op die is toegestaan voordat u een bewerking opnieuw probeert uit te voeren. | 120 seconden (of 120 * 1000 ms) |
maxTries |
number |
Optioneel. Het maximum aantal nieuwe pogingen voordat u het opgeeft. | 4 |
retryDelayInMs |
number |
Optioneel. Hiermee geeft u de hoeveelheid vertraging op die moet worden gebruikt voordat u een bewerking opnieuw probeert uit te voeren. | 4 seconden (of 4 * 1000 ms) |
retryPolicyType |
StorageRetryPolicyType | Optioneel. StorageRetryPolicyType, standaard is beleid voor exponentieel opnieuw proberen. | StorageRetryPolicyType.Exponential |
secondaryHost |
string |
Optioneel. Eindpunt van secundair opslagaccount om aanvragen opnieuw uit te voeren. Voordat u deze waarde instelt, moet u inzicht krijgen in de problemen met het lezen van verouderde en mogelijk inconsistente gegevens. Zie Georedundantie gebruiken om maximaal beschikbare toepassingen te ontwerpen voor meer informatie. | Geen |
tryTimeoutInMs |
number |
Optioneel. Maximale tijd die is toegestaan voordat een aanvraag wordt geannuleerd en ervan wordt uitgegaan dat deze is mislukt. Deze time-out is van toepassing op de bewerkingsaanvraag en moet zijn gebaseerd op de bandbreedte die beschikbaar is voor de hostcomputer en de nabijheid van de Storage-service. | Een waarde van 0 of niet-gedefinieerde resultaten resulteert in geen standaardtime-out op de client en de standaardtime-out aan de serverzijde wordt gebruikt. Zie Time-outs voor blobservicebewerkingen voor meer informatie. |
In het volgende codevoorbeeld configureren we de opties voor opnieuw proberen in een exemplaar van StorageRetryOptions, geven deze door aan een nieuw StoragePipelineOptions-exemplaar en geven we deze pipeline
door bij het instantiëren BlobServiceClient
:
const options = {
retryOptions: {
maxTries: 4,
retryDelayInMs: 3 * 1000,
maxRetryDelayInMs: 120 * 1000,
retryPolicyType: StorageRetryPolicyType.EXPONENTIAL
},
};
const pipeline = newPipeline(credential, options);
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
credential,
pipeline
);
In dit voorbeeld gebruikt elke serviceaanvraag die is uitgegeven vanuit het BlobServiceClient
object de opties voor opnieuw proberen zoals gedefinieerd in retryOptions
. Dit beleid is van toepassing op clientaanvragen. U kunt verschillende strategieën voor opnieuw proberen configureren voor serviceclients op basis van de behoeften van uw app.
Gerelateerde inhoud
- Zie Tijdelijke foutafhandeling voor richtlijnen voor architectuur en algemene aanbevolen procedures voor beleid voor opnieuw proberen.
- Zie Het patroon Opnieuw proberen voor hulp bij het implementeren van een patroon voor nieuwe pogingen voor tijdelijke fouten.