Les pipelines de données subissent parfois des pics de trafic publié. Les pics de trafic peuvent submerger les abonnés, sauf si vous y êtes préparé. Une solution simple Pour éviter les pics de trafic, il faut augmenter de manière dynamique les ressources des abonnés Pub/Sub. pour traiter davantage de messages. Cependant, cette solution peut augmenter les coûts fonctionnent instantanément. Par exemple, vous pourriez avoir besoin de plusieurs VM.
Le contrôle de flux côté abonné permet à l'abonné de réguler le débit à les messages qui sont ingérés. Le contrôle de flux gère donc les pics de trafic ou jusqu'à ce que le nombre d'abonnés augmente.
Le contrôle de flux est une fonctionnalité disponible dans Pub/Sub bibliothèque cliente de haut niveau. Vous pouvez également implémenter votre propre programmation de contrôle de flux lorsque vous utilisez un bibliothèque cliente de bas niveau.
La nécessité de contrôler le flux indique que les messages sont publiés à un un débit plus élevé que qu'elles ne sont consommées. Si ce scénario est un problème plutôt qu'un pic transitoire du volume des messages, envisagez d'augmenter le nombre d'instances de client abonné.
Configuration du contrôle de flux
Le contrôle de flux vous permet de configurer le nombre maximal d'octets alloués demandes en attente et le nombre maximal de messages en attente autorisés. Définissez ces limites en fonction de la capacité de débit de vos machines clientes.
Les valeurs par défaut des variables de contrôle de flux et les noms des les variables peuvent différer d'une bibliothèque cliente à l'autre. Par exemple, Dans la bibliothèque cliente Java, les variables suivantes configurent le contrôle de flux:
setMaxOutstandElementCount(). Définit le nombre maximal de messages. pour lesquelles Pub/Sub n'a reçu aucun accusé de réception ni reçu d’acquittements.
setMaxOutstandingRequestBytes(). : définit la taille maximale des messages. pour lesquelles Pub/Sub n'a reçu aucun accusé de réception ni reçu d’acquittements.
Si la limite pour setMaxOutstandingElementCount()
ou
setMaxOutstandingRequestBytes()
est croisé, le client abonné
n'extrait pas plus de messages. Ce comportement persiste jusqu'à ce que les messages
qui sont déjà extraites deviennent
confirmées ou négativement reconnues.
Nous pouvons ainsi aligner le débit sur le coût associé
qui génère plus d'abonnés.
Exemples de code pour le contrôle de flux
Pour contrôler la vitesse à laquelle le client abonné reçoit des messages, utilisez le les caractéristiques de contrôle de flux de l'abonné. Ces fonctionnalités de contrôle de flux illustré dans les exemples suivants:
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++.
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#.
Go
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Go 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 Go.
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.
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
Avant d'essayer cet exemple, suivez les instructions d'installation dans le langage Ruby 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 Ruby.
Étape suivante
Découvrez les autres options de distribution que vous pouvez configurer pour un abonnement:
Gérer les échecs de messages avec une stratégie de nouvelle tentative d'abonnement
Transférer les messages non distribués dans une file d'attente de lettres mortes
Relire des messages précédemment confirmés ou supprimer définitivement des messages
Prolonger le temps de confirmation grâce à la gestion du bail