Condividi tramite


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 BlobServiceClientun'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.