Bonnes pratiques pour s'abonner à un sujet Pub/Sub

En s'abonnant, un client abonné reçoit des messages d'un sujet Pub/Sub. Voici quelques bonnes pratiques à suivre pour vous abonner à Pub/Sub.

Dans ce document, nous partons 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 gcloud 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 ressource Google 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 pas inclure de code dans votre application abonnée qui importe la bibliothèque cliente en tant que dépendance.

  • Le client abonné ne peut pas effectuer de requêtes sortantes.

  • Vous souhaitez utiliser la même instance pour traiter les messages de différents sujets et abonnements, où le client abonné ne connaît pas la liste des abonnements.

Dans les cas généraux, nous vous recommandons d'utiliser la bibliothèque cliente de haut niveau. Si vous utilisez plutôt un pull unaire, ne définissez pas returnImmediately sur true. Définir cette valeur sur true a un impact négatif sur les performances de la récupération. Le champ returnImmediately est désormais obsolète.

Traiter les messages avant de les 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 une confirmation et que le traitement échoue, le service ne le renvoie pas. 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 de 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 ne soient surchargés par des pics de trafic. Cela peut permettre aux mécanismes d'autoscaling de répondre à une charge accrue ou de répartir le traitement de la charge sur une période plus longue. La première méthode réduit la latence, tandis que la seconde réduit les coûts.

Pour configurer la gestion du débit, 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 de 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'acquittements ni d'acquittements négatifs.

  • Nombre total d'octets de messages en attente définit la taille totale maximale des messages envoyés au client pour lesquels Pub/Sub n'a pas reçu de confirmations ni de confirmations négatives.

Si la limite d'une de ces options est dépassée, le client abonné ne récupère plus de messages. Ce comportement persiste jusqu'à ce que les messages déjà extraits soient confirmés ou non. Vous pouvez ainsi faire un compromis entre le débit et le coût associé à l'exécution de plus d'abonnés.

Bonnes pratiques pour les messages ordonnés dans l'abonnement

Si vous utilisez l'ordre des messages, assurez-vous que:

  • Choisissez des abonnements StreamingPull ou Pull. Pour un abonnement push, Pub/Sub n'accepte qu'un seul message en attente pour chaque clé de tri à la fois. Envoyer des requêtes push parallèles dans un tel scénario revient à envoyer plusieurs lots de messages pour la même clé de tri afin de récupérer 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. Côté abonné, n'activez la propriété de tri des messages que pour les abonnements pour lesquels vous souhaitez recevoir des messages triés. En fonction de l'état de la propriété, chaque abonnement associé au sujet peut déterminer s'il a besoin d'une diffusion ordonnée sans s'affecter les uns les autres.

  • Confirmez les messages dans l'ordre. Lorsque vous utilisez la diffusion ordonnée, les accusés de réception des messages ultérieurs ne sont pas traités tant que les accusés de réception des messages précédents ne sont pas traités par clé de tri. 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 n'acceptez que le message 3, le service ne considère pas le message 3 comme accepté tant que les messages 1 et 2 ne sont pas également acceptés. 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 le type d'abonnement adapté à vos besoins. Si votre abonnement le permet, utilisez également la bibliothèque cliente de haut niveau.
Relire un message confirmé Traitez un message avant de l'acquitter. 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 vos abonnés pour vous assurer qu'ils ne sont pas surchargés tant que l'autoscaling ne s'active pas ou que le temps ne passe pas.
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.

Étape suivante