Ce document part du principe que vous connaissez déjà le processus d'abonnement à un sujet Pub/Sub et de réception de messages dans votre client abonné.
Si vous débutez avec Pub/Sub, consultez l'un des guides de démarrage rapide et découvrez comment exécuter Pub/Sub à l'aide de la console, de la Google Cloud CLI ou des bibliothèques clientes.
Choisir le bon abonnement
Pub/Sub propose des abonnements standards tels que les abonnements push et pull. En plus des abonnements standards, Pub/Sub propose également des abonnements d'exportation qui vous permettent de stocker des messages directement dans une ressourceGoogle Cloud , sans avoir besoin de Dataflow comme intermédiaire. Par exemple, les abonnements BigQuery stockent les messages dans une table BigQuery.
Les abonnements push sont recommandés dans les scénarios suivants :
Vous ne pouvez inclure aucun code dans votre application d'abonné qui importe la bibliothèque cliente en tant que dépendance.
Le client abonné ne peut effectuer aucune requête sortante.
Vous souhaitez utiliser la même instance pour traiter les messages provenant de différents sujets et abonnements, alors que le client abonné ne connaît pas la liste des abonnements.
Pour les cas généraux, nous vous recommandons d'utiliser la bibliothèque cliente de haut niveau. Si vous utilisez plutôt l'extraction unaire, ne définissez pas returnImmediately
sur true
. Si vous le définissez sur true
, les performances de l'extraction seront affectées.
Le champ returnImmediately
est désormais obsolète.
Pour comparer tous les types d'abonnements et choisir celui qui correspond le mieux aux besoins de votre entreprise, consultez le tableau comparatif des abonnements Pub/Sub.
Pour en savoir plus sur les avantages d'un abonnement à l'exportation, consultez Quand utiliser un abonnement à l'exportation.
Traiter les messages avant d'en accuser réception
Par défaut, Pub/Sub supprime un message d'un abonnement une fois qu'il a été confirmé. Si vous ne traitez pas un message avant d'envoyer un accusé de réception et que le traitement échoue, le service ne renvoie pas le message. L'exception concerne les cas où vous avez configuré la conservation des messages confirmés ou la conservation des sujets, et que vous effectuez une opération de recherche.
Si vous avez des abonnés à latence élevée, vous devrez peut-être définir des valeurs personnalisées pour le contrôle du flux et la gestion des baux.
Configurer le contrôle de flux des abonnés pour les pics de trafic temporaires
Le contrôle de flux côté abonné vous permet d'éviter que les abonnés soient surchargés par des pics de trafic. Cela peut laisser le temps aux mécanismes d'autoscaling de répondre à une charge accrue ou répartir le traitement de la charge sur une période plus longue. La première méthode permet de réduire la latence, tandis que la seconde permet de réduire les coûts.
Pour configurer le contrôle du flux, vous devez définir des valeurs appropriées pour maximum outstanding messages
et total outstanding message bytes
. Les valeurs par défaut de ces variables de contrôle du flux et les noms des variables peuvent varier d'une bibliothèque cliente à l'autre.
Nombre maximal de messages en attente : définit le nombre maximal de messages envoyés au client pour lesquels Pub/Sub n'a pas reçu d'accusé de réception ni d'accusé de réception négatif.
Nombre total d'octets des messages en attente : définit la taille totale maximale des messages envoyés au client pour lesquels Pub/Sub n'a pas reçu d'accusé de réception ni d'accusé de non-réception.
Si la limite de l'une de ces options est dépassée, le client abonné ne récupère pas d'autres messages. Ce comportement persiste jusqu'à ce que les messages déjà extraits soient confirmés ou refusés. Vous pouvez ainsi échanger le débit contre le coût associé à l'exécution de plusieurs abonnés.
Gérer les diffusions en double
Par défaut, Pub/Sub distribue les messages aux abonnés au moins une fois. Cela signifie que les messages peuvent être distribués plusieurs fois, même s'ils ont été accusés réception. Les sections suivantes expliquent comment gérer les scénarios de nouvelle distribution courants.
Redélivrance cohérente de nombreux messages
Si vous constatez que de nombreux messages sont toujours redistribués, cela signifie que vos abonnés sont surchargés ou qu'ils ne confirment pas les messages avant l'expiration du délai.
Si vous utilisez un abonnement pull, vous devrez peut-être définir des valeurs personnalisées pour les valeurs de contrôle du flux ou augmenter les périodes d'extension du bail à l'aide de la gestion des baux.
Si vous utilisez des abonnements push, vous devrez peut-être augmenter le paramètre de délai d'accusé de réception. Vous pouvez également suivre les bonnes pratiques pour maintenir un abonnement sain.
Redistribution occasionnelle des messages
Si vous constatez que des messages sont renvoyés avant l'expiration du délai de confirmation ou après avoir été confirmés en quelques secondes, cela signifie que Pub/Sub fonctionne comme prévu. Vous ne devriez pas voir ces pics de nouvelle distribution fréquemment, mais lorsqu'ils se produisent, ils concernent probablement plusieurs messages simultanément. Votre système doit être conçu pour tolérer ces doublons occasionnels.
Redélivrance répétée de quelques messages
Si vous constatez qu'un petit nombre de messages sont distribués plusieurs fois, commencez par confirmer que vous les avez bien reçus. Si ce n'est pas le cas, déterminez pourquoi votre abonné ne gère pas correctement les messages. Vous pouvez configurer un sujet de lettres mortes pour éviter toute nouvelle distribution. Si vous accusez réception du message, il est possible que Pub/Sub fonctionne toujours comme prévu. Bien que cela soit très rare, il est toujours possible qu'un petit nombre de messages soient distribués plusieurs fois en cas de perturbations internes du réseau ou du matériel. Le service tente de se réparer lui-même dans ces cas, mais l'activation des solutions peut prendre plusieurs minutes.
Votre système doit tolérer les nouvelles distributions. Vous pouvez réduire ce risque en veillant à traiter les messages et à en accuser réception le plus rapidement possible.
Si votre application ne peut tolérer aucun doublon, vous pouvez activer la distribution de type "exactement une fois". N'oubliez pas que cette fonctionnalité n'est disponible que pour les abonnements pull et qu'elle entraîne également une latence de publication à l'abonnement plus élevée. Avant d'activer cette fonctionnalité, évaluez si le compromis d'une latence plus élevée est acceptable pour votre cas d'utilisation.
Bonnes pratiques pour la messagerie ordonnée dans l'abonnement
Si vous utilisez l'ordre des messages, assurez-vous des points suivants :
Choisissez entre les abonnements StreamingPull et Pull. Pour un abonnement push, Pub/Sub n'accepte qu'un seul message en attente pour chaque clé de tri à la fois. Dans un tel scénario, l'envoi de requêtes push parallèles serait semblable à l'envoi de plusieurs lots de messages pour la même clé de tri afin d'extraire les abonnés simultanément. Par conséquent, les abonnements push ne sont pas recommandés pour les sujets où plusieurs messages sont fréquemment publiés avec la même clé de tri ou où la latence est extrêmement importante.
Activez le tri des messages dans l'abonnement. Du côté de l'éditeur, si vous envoyez des messages avec une clé de tri et dans la même région, vous pouvez configurer les abonnés pour qu'ils reçoivent ces messages dans l'ordre. Du côté de l'abonné, activez la propriété de tri des messages uniquement pour les abonnements pour lesquels vous souhaitez recevoir des messages triés. En fonction de l'état de la propriété, chaque abonnement associé à la rubrique peut déterminer s'il a besoin d'une diffusion ordonnée sans s'affecter mutuellement.
Confirmez les messages dans l'ordre. Lorsque vous utilisez la diffusion ordonnée, les confirmations des messages ultérieurs ne sont traitées qu'une fois que les confirmations des messages précédents ont été traitées par clé d'ordonnancement. Par exemple, si vous avez les messages 1, 2 et 3 avec la même clé de tri, que vous les recevez tous et que vous ne confirmez que le message 3, le service ne considère pas le message 3 comme confirmé tant que les messages 1 et 2 ne le sont pas également. Si les accusés de réception des messages 1 et 2 ne sont jamais reçus, les messages 1, 2 et 3 sont tous renvoyés.
Récapitulatif des bonnes pratiques
Le tableau suivant récapitule les bonnes pratiques recommandées dans ce document :
Thème | Tâche |
---|---|
Choisir un type d'abonnement | Choisissez l'abonnement qui répond le mieux aux besoins de votre entreprise. Si votre abonnement le permet, utilisez également la bibliothèque cliente de haut niveau. |
Relire un message confirmé | Traitez un message avant de le confirmer. Vous pouvez également configurer une opération de recherche pour ne pas perdre les messages confirmés. |
Contrôle de flux | Configurez le contrôle de flux dans les paramètres de votre abonné pour vous assurer que les abonnés ne sont pas surchargés jusqu'à ce que l'autoscaling se déclenche ou que le temps passe. |
Trier des messages | Lorsque vous utilisez la messagerie ordonnée, choisissez StreamingPull ou Pull, activez le tri des messages dans l'abonnement et confirmez les messages dans l'ordre. |