Implementare un criterio di ripetizione dei tentativi con Java
Qualsiasi applicazione eseguita nel cloud o comunica con servizi e risorse remoti deve essere in grado di gestire gli errori temporanei. È comune che queste applicazioni verifichino errori a causa di una perdita momentanea della connettività di rete, di un timeout della richiesta quando un servizio o una risorsa è occupato o altri fattori. Gli sviluppatori devono creare applicazioni per gestire in modo trasparente gli errori temporanei per migliorare la stabilità e la resilienza.
Questo articolo illustra come usare la libreria client Archiviazione di Azure per Java per configurare un criterio di ripetizione dei tentativi per un'applicazione che si connette a Archiviazione BLOB di Azure. I criteri di ripetizione dei tentativi definiscono il modo in cui l'applicazione gestisce le richieste non riuscite e devono essere sempre ottimizzate per soddisfare i requisiti aziendali dell'applicazione e la natura dell'errore.
Configurare le opzioni di ripetizione dei tentativi
I criteri di ripetizione dei tentativi per l'archiviazione BLOB vengono configurati a livello di codice, offrendo il controllo sulla modalità di applicazione delle opzioni di ripetizione ai vari scenari e richieste di servizio. Ad esempio, un'app Web che invia richieste in base all'interazione dell'utente potrebbe implementare un criterio con meno tentativi e ritardi più brevi per aumentare la velocità di risposta e notificare all'utente quando si verifica un errore. In alternativa, un'app o un componente che esegue richieste batch in background potrebbe aumentare il numero di tentativi e usare una strategia di backoff esponenziale per consentire il completamento corretto del tempo di richiesta.
Nella tabella seguente sono elencati i parametri disponibili quando si costruisce un'istanza RequestRetryOptions , insieme al tipo, a una breve descrizione e al valore predefinito se non si apportano modifiche. Dovresti essere proattivo nell'ottimizzazione dei valori di queste proprietà per soddisfare le esigenze della tua app.
Proprietà | Type | Descrizione | Default value |
---|---|---|---|
retryPolicyType |
RetryPolicyType | Facoltativo. Approccio da usare per calcolare i ritardi di ripetizione dei tentativi. | ESPONENZIALE |
maxTries |
Intero | Facoltativo. Numero massimo di tentativi prima di rinunciare. | 4 |
tryTimeoutInSeconds |
Intero | Facoltativo. Tempo massimo consentito prima dell'annullamento di una richiesta e presupposto non riuscito. Si noti che il timeout si applica alla richiesta di operazione, non alla fine dell'operazione complessiva. Questo valore deve essere basato sulla larghezza di banda disponibile per il computer host e sulla prossimità al servizio di archiviazione. Un buon punto di partenza potrebbe essere di 60 secondi per MB di dimensioni previste del payload. | Integer.MAX_VALUE (secondi) |
retryDelayInMs |
Lungo | Facoltativo. Specifica la quantità di ritardo da utilizzare prima di ripetere un'operazione. | 4 ms per ESPONENZIALE, 30 ms per FIXED |
maxRetryDelayInMs |
Lungo | Facoltativo. Specifica il ritardo massimo consentito prima di ripetere un'operazione. | 120 ms |
secondaryHost |
String | Facoltativo. Endpoint dell'account di archiviazione secondario per ritentare le richieste. Prima di impostare questo valore, è necessario comprendere i problemi relativi alla lettura di dati obsoleti e potenzialmente incoerenti. Per altre informazioni, vedere Usare la ridondanza geografica per progettare applicazioni a disponibilità elevata. | None |
Nell'esempio di codice seguente vengono configurate le opzioni di ripetizione dei tentativi in un'istanza di RequestRetryOptions e passatela a BlobServiceClientBuilder
per creare un oggetto client:
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 questo esempio ogni richiesta di servizio generata dall'oggetto BlobServiceClient
usa le opzioni di ripetizione dei tentativi, come definito nell'istanza RequestRetryOptions
di . Questo criterio si applica alle richieste client. È possibile configurare diverse strategie di ripetizione dei tentativi per i client del servizio in base alle esigenze dell'app.
Passaggi successivi
- Questo articolo fa parte della guida per sviluppatori di Archiviazione BLOB per Java. Vedere l’elenco completo degli articoli della guida per sviluppatori in Creare la propria app.
- Per indicazioni sull'architettura e procedure consigliate generali per i criteri di ripetizione dei tentativi, vedere gestione degli errori temporanei.
- Per indicazioni sull'implementazione di un modello di ripetizione dei tentativi per gli errori temporanei, vedere Modello di ripetizione dei tentativi.