Implementare un criterio di ripetizione dei tentativi con JavaScript o TypeScript
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 JavaScript 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 durante la creazione di un'istanza di StorageRetryOptions , 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 |
---|---|---|---|
maxRetryDelayInMs |
number |
Facoltativo. Specifica il ritardo massimo consentito prima di ripetere un'operazione. | 120 secondi (o 120 * 1000 ms) |
maxTries |
number |
Facoltativo. Numero massimo di tentativi prima di rinunciare. | 4 |
retryDelayInMs |
number |
Facoltativo. Specifica la quantità di ritardo da utilizzare prima di ripetere un'operazione. | 4 secondi (o 4 * 1000 ms) |
retryPolicyType |
StorageRetryPolicyType | Facoltativo. StorageRetryPolicyType, il valore predefinito è un criterio di ripetizione esponenziale dei tentativi. | StorageRetryPolicyType.Exponential |
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 |
tryTimeoutInMs |
number |
Facoltativo. Tempo massimo consentito prima dell'annullamento di una richiesta e presupposto non riuscito. Questo timeout si applica alla richiesta di operazione e deve essere basato sulla larghezza di banda disponibile per il computer host e sulla prossimità al servizio di archiviazione. | Un valore pari a 0 o non definito non comporta alcun timeout predefinito nel client e viene usato il timeout predefinito sul lato server. Per altre informazioni, vedere Timeout per le operazioni del servizio BLOB. |
Nell'esempio di codice seguente vengono configurate le opzioni di ripetizione dei tentativi in un'istanza di StorageRetryOptions, passarla a una nuova istanza di StoragePipelineOptions e passare pipeline
quando si crea BlobServiceClient
un'istanza di :
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 questo esempio ogni richiesta di servizio generata dall'oggetto BlobServiceClient
usa le opzioni di ripetizione dei tentativi come definito in retryOptions
. 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.
Contenuto correlato
- 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.