Implémenter une stratégie de nouvelles tentatives avec Java
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 Java afin de configurer une stratégie de nouvelles tentatives pour une application qui se connecte au 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 liste les paramètres disponibles lors de la création d’une instance RequestRetryOptions, 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 |
---|---|---|---|
retryPolicyType |
RetryPolicyType | facultatif. Approche à utiliser pour calculer les délais de nouvelle tentative. | EXPONENTIAL |
maxTries |
Entier | facultatif. Nombre maximal de nouvelles tentatives avant abandon. | 4 |
tryTimeoutInSeconds |
Entier | facultatif. Durée maximale autorisée avant qu’une demande ne soit annulée et considérée comme en échec. Notez que le délai d’expiration s’applique à la demande d’opération, pas à l’opération globale de bout en bout. Cette valeur doit être basée sur la bande passante disponible sur l’ordinateur hôte et la proximité du service de stockage. Un bon point de départ pourrait être par exemple 60 secondes par Mo de taille de charge utile anticipée. | Integer.MAX_VALUE (secondes) |
retryDelayInMs |
Long | facultatif. Spécifie le délai à utiliser avant de réessayer une opération. | 4 ms pour EXPONENTIAL, 30 ms pour FIXED |
maxRetryDelayInMs |
Long | facultatif. Spécifie le délai maximal autorisé avant de réessayer une opération. | 120 ms |
secondaryHost |
Chaîne | 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 |
Dans l’exemple de code suivant, nous configurons les options de nouvelle tentative dans une instance RequestRetryOptions et la passons à BlobServiceClientBuilder
pour créer un objet 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();
Dans cet exemple, chaque demande de service émise à partir de l’objet BlobServiceClient
utilise les options de nouvelle tentative définies dans l’instance RequestRetryOptions
. 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.
Étapes suivantes
- Cet article fait partie du guide du développeur Stockage Blob pour Java. Consultez la liste complète des articles du guide pour les développeurs à la page Générer 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.