Le contrôle de la concurrence est une fonctionnalité disponible dans la bibliothèque cliente de haut niveau Pub/Sub. Vous pouvez également implémenter votre propre contrôle de simultanéité vous utilisez une bibliothèque de bas niveau.
La prise en charge du contrôle de simultanéité dépend du langage de programmation bibliothèque cliente. Pour les implémentations de langage compatibles avec les threads parallèles, comme C++, Go et Java, les bibliothèques clientes font le choix par défaut pour le nombre de threads.
Ce choix peut ne pas être optimal pour votre application. Par exemple : si votre application d'abonné ne suit pas le rythme des messages entrants ; et qu'elle n'est pas liée au processeur, vous devez augmenter le nombre de threads. Pour les opérations de traitement de messages nécessitant une utilisation intensive du processeur, il peut être approprié de réduire le nombre de threads.
Configurations de contrôle de simultanéité
Les valeurs par défaut des variables de contrôle de simultanéité et les noms des
les variables peuvent différer d'une bibliothèque cliente à l'autre. Par exemple, dans le client Java,
les méthodes de configuration du contrôle de simultanéité
setSystemExecutorProvider()
, setExecutorProvider()
et setParallelPullCount()
.
setParallelPullCount() vous permet de décider du nombre de flux à ouvrir. Vous pouvez ouvrir plus de flux si votre client abonné peut traiter plus de données que cela est envoyé en un seul flux de 10 Mbit/s.
setExecutorProvider() vous permet de personnaliser le fournisseur d'exécuteur utilisé pour le traitement des messages. Par exemple, vous pouvez remplacer le fournisseur d'exécuteur par un qui renvoie un seul exécuteur partagé avec un nombre limité de threads sur avec plusieurs clients abonnés. Cette configuration permet de limiter le nombre threads créés.
setSystemExecutorProvider() vous permet de personnaliser le fournisseur d'exécuteur utilisé pour la gestion du bail. En règle générale, vous ne configurez cette valeur que vous souhaitez utiliser le même fournisseur d'exécuteur dans
setExecutorProvider
etsetSystemExecutorProvider
Par exemple, vous pouvez utiliser le même exécuteur si vous disposez d'abonnements à faible débit. L'utilisation de la même valeur limite le nombre de threads dans le client.
Le nombre total de threads utilisés pour le contrôle de simultanéité dépend de le fournisseur d'exécuteur transmis dans la bibliothèque cliente et le nombre d'extractions en parallèle.
Exemples de code pour le contrôle de simultanéité
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.
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