Beleid voor opnieuw proberen implementeren met Java
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 Java 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 RequestRetryOptions-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 |
---|---|---|---|
retryPolicyType |
RetryPolicyType | Optioneel. De methode die moet worden gebruikt voor het berekenen van vertragingen voor opnieuw proberen. | EXPONENTIEEL |
maxTries |
Geheel getal | Optioneel. Het maximum aantal nieuwe pogingen voordat u het opgeeft. | 4 |
tryTimeoutInSeconds |
Geheel getal | Optioneel. Maximale tijd die is toegestaan voordat een aanvraag wordt geannuleerd en ervan wordt uitgegaan dat deze is mislukt. Houd er rekening mee dat de time-out van toepassing is op de bewerkingsaanvraag, niet op het einde van de algehele bewerking. Deze waarde moet zijn gebaseerd op de bandbreedte die beschikbaar is voor de hostcomputer en de nabijheid van de Storage-service. Een goed beginpunt kan 60 seconden per MB van de verwachte nettoladinggrootte zijn. | Integer.MAX_WAARDE (seconden) |
retryDelayInMs |
Lang | Optioneel. Hiermee geeft u de hoeveelheid vertraging op die moet worden gebruikt voordat u een bewerking opnieuw probeert uit te voeren. | 4 ms voor EXPONENTIEEL, 30 ms voor VAST |
maxRetryDelayInMs |
Lang | Optioneel. Hiermee geeft u de maximale vertraging op die is toegestaan voordat u een bewerking opnieuw probeert uit te voeren. | 120 ms |
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 |
In het volgende codevoorbeeld configureren we de opties voor opnieuw proberen in een exemplaar van RequestRetryOptions en geven we deze door om een clientobject te BlobServiceClientBuilder
maken:
RequestRetryOptions retryOptions = new RequestRetryOptions(RetryPolicyType.FIXED, 2, 3, 1000L, 1500L, null);
BlobServiceClient client = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(credential)
.retryOptions(retryOptions)
.buildClient();
In dit voorbeeld gebruikt elke serviceaanvraag die is uitgegeven vanuit het BlobServiceClient
object de opties voor opnieuw proberen zoals gedefinieerd in het RequestRetryOptions
exemplaar. 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.
Volgende stappen
- Dit artikel maakt deel uit van de ontwikkelaarshandleiding voor Blob Storage voor Java. Zie de volledige lijst met artikelen over ontwikkelaarshandleidingen in Build your app.
- 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.