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

Lors de l'abonnement, un client abonné reçoit les 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 d'abonné.

Si vous ne connaissez pas 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 l'abonnement approprié

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 cas suivants:

  • Vous ne pouvez pas inclure dans votre application d'abonné de code 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 lorsque 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 le mode pull unaire, ne définissez pas returnImmediately sur true. La définition de cette valeur sur true a un impact négatif sur les performances d'extraction. Le champ returnImmediately est désormais obsolète.

Traiter les messages avant de les confirmer

Par défaut, Pub/Sub supprime un message d'un abonnement une fois que le message 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 redistribue pas le message. Exception : lorsque vous avez configuré la conservation des messages confirmés ou de 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 du flux d'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 augmentation de charge ou de répartir le traitement de la charge sur une période plus longue. La première méthode permet d'économiser la latence, tandis que la seconde permet de réduire les coûts.

Pour configurer le contrôle de 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 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 distribués au client pour lesquels Pub/Sub n'a pas reçu d'accusés de réception ni d'accusés de réception négatifs.

  • Le nombre total d'octets de message en attente définit la taille totale maximale des messages distribué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.

Si la limite de l'une de ces options est dépassée, le client abonné n'extrait pas plus de messages. Ce comportement se poursuit jusqu'à ce que les messages déjà extraits soient confirmés ou confirmés de manière négative. De cette manière, vous pouvez trouver un compromis entre le débit et le coût associé à l'exploitation d'un plus grand nombre d'abonnés.

Bonnes pratiques pour les messages ordonnés dans le cadre des abonnements

Si vous triez les messages, vérifiez les points suivants:

  • Choisissez un abonnement StreamingPull ou Pull. Pour un abonnement push, Pub/Sub n'accepte qu'un seul message en attente à la fois pour chaque clé de commande. L'envoi de requêtes push parallèles dans ce type de scénario s'apparente à l'envoi simultané de plusieurs lots de messages pour la même clé de tri à des abonnés pull. Par conséquent, les abonnements push ne sont pas recommandés pour les sujets dans lesquels plusieurs messages sont fréquemment publiés avec la même clé de tri ou pour lesquels la latence est extrêmement importante.

  • Activez le tri des messages dans l'abonnement. Côté éditeur, si vous envoyez des messages avec une clé de tri 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 ordonnés. En fonction de l'état de la propriété, chaque abonnement associé au sujet peut déterminer s'il a besoin d'être livré sans incidence les uns sur les autres.

  • Confirmez les messages dans l'ordre. Dans le cas d'une distribution 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 antérieurs ne sont pas traités par clé de tri. Par exemple, si vous avez des messages 1, 2 et 3 avec la même clé de tri, que vous les recevez tous et que vous confirmez uniquement le message 3, le service ne considère pas le message 3 comme confirmé tant que les messages 1 et 2 ne sont pas également confirmé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 redistribués.

Récapitulatif des bonnes pratiques

Le tableau suivant récapitule les bonnes pratiques recommandées dans ce document:

Sujet Tâche
Sélectionner un type d'abonnement Choisissez le type d'abonnement adapté aux besoins de votre entreprise. Si votre abonnement le permet, utilisez également la bibliothèque cliente de haut niveau.
Rouvrir un message confirmé Traitez un message avant de l'accuser réception. Vous pouvez également configurer une opération de recherche afin de 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 n'est pas activé ou que le temps ne s'est pas écoulé.
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.

Étapes suivantes