Partager via


Implémenter une stratégie de nouvelles tentatives avec JavaScript ou TypeScript

Toute application qui s’exécute dans le cloud ou communique avec les services et ressources distants doit être en mesure de gérer les erreurs temporaires. Il est courant que ces applications rencontrent des erreurs en raison d’une perte momentanée de connectivité réseau, d’un délai d’expiration de requête lorsqu’un service ou une ressource est occupé ou d’autres facteurs. Les développeurs doivent créer des applications pour gérer les erreurs temporaires de manière transparente afin d’améliorer la stabilité et la résilience.

Dans cet article, vous apprenez à utiliser la bibliothèque de client Stockage Azure pour JavaScript afin de configurer une stratégie de nouvelles tentatives pour une application qui se connecte à Stockage Blob Azure. Les stratégies de nouvelles tentatives définissent la façon dont l’application gère les demandes ayant échoué et doivent toujours être ajustées pour répondre aux exigences métier de l’application et à la nature de l’échec.

Configurer les options de nouvelles tentatives

Les stratégies de nouvelles tentatives pour le stockage d’objets blob sont configurées par programme, offrant un contrôle sur la façon dont les options de nouvelle tentative sont appliquées à diverses demandes de service et scénarios. Par exemple, une application web qui émet des demandes en fonction de l’interaction utilisateur peut implémenter une stratégie avec moins de nouvelles tentatives et des retards plus courts pour augmenter la réactivité et avertir l’utilisateur lorsqu’une erreur se produit. Par ailleurs, une application ou un composant exécutant des demandes de traitement par lots en arrière-plan peut augmenter le nombre de nouvelles tentatives et utiliser une stratégie d’interruption exponentielle pour permettre la fin de la demande.

Le tableau suivant répertorie les paramètres disponibles lors de la création d’une instance StorageRetryOptions, ainsi que le type, une description courte et la valeur par défaut si vous n’apportez aucun changement. Vous devez régler la valeur de ces propriétés de manière proactive pour répondre aux besoins de votre application.

Propriété Type Description Valeur par défaut
maxRetryDelayInMs number facultatif. Spécifie le délai maximal autorisé avant de réessayer une opération. 120 secondes (ou 120 * 1 000 ms)
maxTries number facultatif. Nombre maximal de nouvelles tentatives avant abandon. 4
retryDelayInMs number facultatif. Spécifie le délai à utiliser avant de réessayer une opération. 4 secondes (ou 4 * 1 000 ms)
retryPolicyType StorageRetryPolicyType facultatif. StorageRetryPolicyType, par défaut, est une stratégie de nouvelles tentatives exponentielle. StorageRetryPolicyType.Exponential
secondaryHost string facultatif. Point de terminaison du compte de stockage secondaire sur lequel réessayer les demandes. Avant de définir cette valeur, vous devez comprendre les problèmes liés à la lecture des données obsolètes et potentiellement incohérentes. Pour en savoir plus, voir Utiliser la géoredondance pour concevoir des applications hautement disponibles. Aucun
tryTimeoutInMs number facultatif. Durée maximale autorisée avant qu’une demande ne soit annulée et considérée comme en échec. Ce délai d’expiration s’applique à la demande d’opération et doit être basé sur la bande passante disponible pour l’ordinateur hôte et la proximité du service de stockage. La valeur 0 ou non définie n’entraîne aucun délai d’expiration par défaut sur le client, et le délai d’expiration par défaut côté serveur est utilisé. Pour plus d’informations, consultez Délais d’attente pour les opérations de service BLOB.

Dans l’exemple de code suivant, nous configurons les options de nouvelle tentative dans une instance de StorageRetryOptions, nous la transmettons à une nouvelle instance StoragePipelineOptions et transmettons pipeline lors de l’instanciation de 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
);

Dans cet exemple, chaque demande de service émise depuis l’objet BlobServiceClient utilise les options de nouvelles tentatives définies dans retryOptions. Cette stratégie s’applique aux demandes clientes. Vous pouvez configurer différentes stratégies de nouvelles tentatives pour les clients de service en fonction des besoins de votre application.

  • Pour obtenir des conseils architecturaux et des bonnes pratiques générales pour les stratégies de nouvelles tentatives, consultez Gestion des erreurs temporaires.
  • Pour obtenir des conseils sur l’implémentation d’un modèle de nouvelles tentatives pour les échecs temporaires, consultez Modèle de nouvelle tentative.