Lorsqu'un message est remis à un abonné par extraction, celui-ci doit le traiter et en accuser réception dans le délai de confirmation. Sinon, l'abonné doit prolonger le délai en appelant à modifier le délai de confirmation.
Les bibliothèques clientes de haut niveau Pub/Sub proposent la gestion des baux comme fonctionnalité qui prolonge automatiquement le délai d'un message qui n'a pas encore été confirmé. Par défaut, les bibliothèques clientes peuvent prolonger le délai d'une heure en envoyant des requêtes modifyAckDeadline périodiques.Les bibliothèques clientes de haut niveau pour Python, Go et Java utilisent le 99e centile du délai de confirmation pour déterminer la durée de chaque prolongation.
La gestion des baux vous permet de contrôler plus précisément le délai d'accusé de réception des messages par rapport à la configuration de la propriété au niveau de l'abonnement. Si vous n'utilisez que le délai de confirmation au niveau de l'abonnement, vous devez trouver le juste milieu entre une valeur faible et une valeur élevée. Une valeur faible augmente la probabilité de doublons, tandis qu'une valeur élevée retarde la nouvelle remise des messages ayant échoué. Il peut être difficile de déterminer la bonne valeur, en particulier lorsque le temps de traitement attendu pour différents messages varie considérablement.
Pour en savoir plus sur les propriétés d'un abonnement, y compris le délai d'accusé de réception, consultez Propriétés d'abonnement.
Configuration de la gestion des baux
Vous pouvez configurer les propriétés suivantes dans les bibliothèques clientes de haut niveau pour contrôler la gestion des baux.
Période d'extension maximale pour la confirmation : Durée maximale pendant laquelle la bibliothèque cliente peut prolonger le délai de confirmation d'un message à l'aide de la requête
modify acknowledgment deadline
. Cette propriété vous permet de déterminer la durée pendant laquelle les clients abonnés doivent traiter les messages.Durée maximale de chaque extension d'accusé de réception. Durée maximale pendant laquelle le délai d'accusé de réception peut être prolongé pour chacune des
modify acknowledgment deadline
demandes. Cette propriété vous permet de définir le temps nécessaire à Pub/Sub pour renvoyer un message. La rediffusion se produit lorsque le premier abonné qui traite le message plante ou devient défectueux et n'est plus en mesure d'envoyer la requêtemodify acknowledgment deadline
.Durée minimale de chaque extension de confirmation. Durée minimale pendant laquelle le délai d'accusé de réception doit être prolongé pour chacune des requêtes
modify acknowledgment deadline
. Cette propriété vous permet de spécifier le délai minimal qui doit s'écouler avant qu'un message soit renvoyé.
Il n'est pas garanti que les délais d'accusé de réception soient respectés, sauf si vous activez la distribution de type "exactement une fois".
Gérer manuellement les délais de confirmation
Pour éviter l'expiration et la nouvelle distribution des messages lorsque vous utilisez l'extraction unaire ou les bibliothèques clientes de bas niveau, utilisez la requête modify acknowledgment deadline
pour prolonger leurs délais de confirmation. Les bibliothèques clientes de haut niveau Go et C++ font exception, car elles fournissent une gestion des baux lors de l'utilisation de l'extraction unaire. Consultez les exemples suivants pour l'extraction unaire avec gestion des baux :
C#
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage C# qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour C#.
Java
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Java qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Java.
Node.js
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Node.js qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Node.js.
Python
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Python qui se trouvent sur la page Démarrage rapide : utiliser des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Python.
Ruby
L'exemple suivant utilise la bibliothèque cliente Ruby Pub/Sub v3. Si vous utilisez toujours la bibliothèque v2, consultez le guide de migration vers la v3. Pour afficher la liste des exemples de code Ruby v2, consultez les exemples de code obsolètes.
Avant d'essayer cet exemple, suivez les instructions de configuration pour Ruby du guide de démarrage rapide : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API Pub/Sub pour Ruby.
Étapes suivantes
Découvrez les autres options de diffusion que vous pouvez configurer pour un abonnement :
Gérer les échecs de messages avec une règle de réessai d'abonnement
Transférer les messages non distribués vers un sujet de lettres mortes
Rouvrir des messages déjà confirmés ou supprimer définitivement des messages
Recevoir et accuser réception des messages exactement une fois
Traiter plus de messages grâce au contrôle de la simultanéité