Démarrage rapide : créer un système Cloud Pub/Sub fonctionnel

Présentation

Ce guide de démarrage rapide va vous accompagner dans la configuration d'un ensemble simple d'applications qui communiquent en envoyant des messages via Cloud Pub/Sub plutôt que via des RPC synchrones. En découplant les applications, la messagerie :

  • rend les applications plus robustes ;
  • peut simplifier le développement.

Par exemple, l'appelant (éditeur) n'a pas besoin du destinataire (abonné) pour être fonctionnel et disponible. Il se contente d'envoyer un message à Cloud Pub/Sub. L'éditeur n'a pas non plus besoin de savoir quelles applications d'abonnés ni combien d'entre elles doivent recevoir le message. Par conséquent, on peut compter sur le service pour remettre le message à une ou plusieurs applications d'abonné dès qu'elles sont disponibles.

Ce guide de démarrage rapide est destiné aux développeurs Python utilisant macOS.

Conditions requises :

  • Un compte Google
  • Un système macOS X avec Python et Git installés
  • Jusqu'à une heure de temps pour terminer l'opération

Présentation du système

Dans ce guide, vous démarrez une application d'éditeur qui envoie le message "Hello, World!" à deux abonnés, comme illustré ci-dessous :

Diagramme du sujet, des abonnements associés, et des applications d'éditeur et d'abonné qui envoient des messages et reçoivent des messages à partir de Cloud Pub/Sub

Les deux applications d'abonné utilisent le même code, mais vous les démarrez à des moments différents. Cela montre comment Cloud Pub/Sub permet la communication asynchrone. Pour créer ce système, procédez comme suit :

  1. Créez le sujet Cloud Pub/Sub et les abonnements nécessaires.
  2. Créez un compte de service que les applications utilisent pour l'authentification.
  3. Configurez les autorisations Cloud IAM.
  4. Démarrez trois applications indépendantes : un éditeur et deux abonnés.

Configuration rapide

Configurer votre projet GCP, ainsi que votre sujet et vos abonnements Cloud Pub/Sub

  1. Connectez-vous à la console Google Cloud Platform.

    Accéder à la console Google Cloud Platform

    Si vous êtes un nouvel utilisateur du cloud, cliquez sur Activer et suivez les invites pour configurer votre compte Cloud.

    Au moment de la création de ce guide de démarrage rapide, la première fraction de l'allocation mensuelle gratuite de données n'est pas facturée. Consultez la page sur la tarification Cloud Pub/Sub pour en savoir plus. Ce guide de démarrage rapide comprend également des instructions de nettoyage.

  2. Sélectionnez un projet existant ou créez-en un. Notez qu'un projet par défaut est créé pour vous lors de votre première utilisation de GCP.

    Dans la section Accueil de la console GCP, notez l'ID du projet. Cette valeur vous servira à définir votre projet Cloud Storage actuel au cours du processus d'initialisation du SDK Cloud. Vous transmettrez également cet ID au script Python lorsque vous démarrerez les applications éditeur et abonné.

  3. Accédez à la section Cloud Pub/Sub de la console Google Cloud Platform.

    Accéder à la section Cloud Pub/Sub

    Suivez l'invite pour activer l'API.

  4. Cliquez sur Créer un sujet. Les applications de publication envoient des messages aux sujets. Utilisez hello_topic comme nom.

  5. Cliquez sur le nom du sujet, puis sur Créer un abonnement :

    1. Nommez l'abonnement sub_one. Ne modifiez aucun des paramètres par défaut. Notez que vous créez un abonnement StreamingPull, qui est un type d'abonnement pull.

    2. Suivez la même procédure pour créer un autre abonnement associé à hello_topic, nommé sub_two.

      Vous pouvez cliquer sur le nom du sujet dans la vue Sujets pour voir les nouveaux abonnements ou vous pouvez passer à la vue Abonnements.

À ce stade, votre environnement Cloud Pub/Sub est prêt à gérer le flux de messages entre les applications de publication et d'abonnement du guide de démarrage rapide.

Créer les identifiants du compte de service

  1. Accédez à la section Comptes de service de la console.

    Accéder aux comptes de service Cloud IAM

  2. Sélectionnez votre projet, puis cliquez sur Créer un compte de service.

  3. Saisissez un nom de compte de service, tel que pubsub-quickstart.

  4. Cliquez sur Créer.

  5. Pour le démarrage rapide, le compte de service nécessite des autorisations de publication et d'abonnement. Utilisez la liste déroulante Select a role (Sélectionner un rôle) pour ajouter le rôle Cloud Pub/Sub Publisher (Éditeur Cloud Pub/Sub).

    Boîte de dialogue "Autorisations de compte de service", utilisant la chaîne "pub" pour filtrer les rôles Cloud Pub/Sub

  6. Cliquez sur Add another role (Ajouter un autre rôle), puis ajoutez Cloud Pub/Sub Subscriber (Abonné Cloud Pub/Sub).

    Boîte de dialogue "Autorisations de compte de service" avec Éditeur Pub/Sub et Abonné Pub/Sub avant de cliquer sur le bouton "Continuer"

  7. Cliquez sur Continue (Continuer). Notez qu'il n'est pas nécessaire d'octroyer aux utilisateurs l'accès à ce compte de service.

  8. Cliquez sur Créer une clé. La bibliothèque cliente se sert de la clé pour accéder à l'API Cloud Pub/Sub.

  9. Sélectionnez JSON, puis cliquez sur Créer.

    La clé est envoyée dans votre dossier Téléchargements. Pour les besoins de ce guide de démarrage rapide, vous pouvez la laisser à cet emplacement.

  10. Remplacez le nom du fichier de clé par ~/Downloads/key.json.

Installer le SDK Cloud

  1. Suivez les instructions pour installer et initialiser le SDK Cloud.

    • Lors de l'initialisation du SDK Cloud, sélectionnez l'option permettant d'indiquer un ID de projet et saisissez l'ID du projet que vous avez créé ou choisi dans la section de configuration.

    • Vous pouvez revenir à ce guide de démarrage rapide après avoir installé et initialisé le SDK Cloud. Vous n'avez pas besoin d'installer d'autres composants ni de télécharger les bibliothèques clientes de Google Cloud.

    Une fois que vous avez installé le SDK Cloud, vous pouvez utiliser l'outil de ligne de commande gcloud pour effectuer des opérations Cloud Pub/Sub dans Compute Engine.

  2. Lancez un nouveau terminal, puis exécutez les commandes gcloud suivantes :

    gcloud pubsub topics list
    gcloud pubsub subscriptions list
    

    Notez que vous pouvez également utiliser gcloud config set project PROJECT_ID pour modifier le projet par rapport à celui que vous avez configuré lors de l'initialisation.

Obtenir la dernière version de Python et configurer un environnement virtuel

Ce guide de démarrage rapide fournit un exemple d'utilisation. Vous n'avez donc pas besoin de suivre l'exemple présenté dans la section relative à la configuration de l'environnement virtuel. Vous pouvez revenir à ce guide de démarrage rapide après avoir installé l'environnement virtuel.

Découvrir le code de l'éditeur et de l'abonné

  1. Créez un dossier de projet contenant les fichiers Cloud Pub/Sub Python nécessaires à ce démarrage rapide. Ensuite, accédez-y et téléchargez le code suivant :

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  2. Fermez tous les terminaux ouverts avant de continuer.

Configurer trois terminaux

  1. Démarrez un terminal pour chaque application de démarrage rapide (un éditeur et deux abonnés). Dans chacun des terminaux, effectuez toutes les opérations décrites dans cette section. Pour plus de commodité, nous désignerons ces terminaux comme suit :

    • terminal publisher (éditeur)
    • terminal sub_one (abonné_1)
    • terminal sub_two (abonné_2)
  2. Créez un environnement virtuel Python, puis activez-le.

    • Dans le premier terminal, exécutez la commande suivante :

      virtualenv --python python2.7 pyenv-qs && source pyenv-qs/bin/activate
    • Dans les deux autres terminaux, la commande suivante est suffisante :

      source pyenv-qs/bin/activate

    Une fois que vous avez exécuté la commande d'activation, votre invite de commande doit inclure (pyenv-qs) $.

    Notez que vous pouvez également diriger votre environnement virtuel vers une version différente de Python.

  3. Assurez-vous que vous utilisez l'environnement virtuel tel que décrit dans le guide de configuration :

    pip install --upgrade google-cloud-pubsub

    Associez la clé JSON au compte de service. Vous avez attribué les principaux rôles Cloud Pub/Sub lors de la création des identifiants du compte de service.

    export GOOGLE_APPLICATION_CREDENTIALS=~/Downloads/key.json
  4. Configurez une variable d'environnement avec votre ID de projet actuel. Cette commande gcloud détermine votre ID de projet actuellement sélectionné et le définit comme une variable :

    export PROJECT=`gcloud config get-value project`

    Pour vérifier que votre GCP actuel est correctement enregistré comme étant cette variable, exécutez cette commande :

    echo $PROJECT
  5. Accédez au dossier de votre projet, puis au dossier d'exemple de démarrage rapide :

    cd python-docs-samples/pubsub/cloud-client/quickstart/
    

Démarrer les applications et observer le flux de messages

Démarrer l'application Abonné 1

Dans le terminal sub_one, démarrez Abonné 1 :

python sub.py $PROJECT sub_one

Une fois lancée, cette application interroge l'abonnement Cloud Pub/Sub sub_one.

L'application Abonné 1 commence à écouter les messages sur l'abonnement sub_one.

Démarrer l'application Éditeur

Dans le terminal publisher, démarrez l'application Éditeur :

python pub.py $PROJECT hello_topic
  • L'application Éditeur envoie un message "Hello, World!" à Cloud Pub/Sub sans connaître les abonnements existants. Elle attribue également un ID de message.

  • L'application Abonné 1 reçoit le message "Hello World", l'imprime et envoie un accusé de réception à Cloud Pub/Sub.

  • L'application Éditeur imprime l'accusé de réception. Ce dernier indique à Cloud Pub/Sub que le message a bien été traité et qu'il n'a pas besoin d'être réexpédié à cet abonné sub_one ou à un autre.

  • Cloud Pub/Sub supprime le message de sub_one.

L'application Éditeur publie le message et attribue un ID de message. L'application Abonné 1 reçoit le message "Hello World" et envoie un accusé de réception.

Démarrer l'application Abonné 2

Dans le terminal sub_two, démarrez Abonné 2 :

python sub.py $PROJECT sub_two

Cet abonné reçoit les messages remis à l'abonnement sub_two. Abonné 2 réutilise le script sub.py. La différence est qu'Abonné 2 n'est pas démarré avant que l'application Éditeur ait envoyé le message au sujet et aux abonnements. Lorsque l'application Éditeur appelait directement Abonné 2, l'application de publication devait attendre qu'Abonné 2 soit créé, sans quoi elle expirait. Cloud Pub/Sub gère cela en enregistrant le message pour Abonné 2.

Abonné 2 commence à écouter et reçoit le message qui l'attendait dans sub_two

Vous êtes maintenant prêt à développer avec Cloud Pub/Sub !

Comment ça s'est passé ?

Notez que des ressources et des liens supplémentaires sont disponibles sur la page d'assistance Cloud Pub/Sub.

Effectuer un nettoyage

  1. Arrêtez toutes les applications en cours d'exécution.

  2. Supprimez le répertoire ~/pubsub-quickstart de votre environnement local.

  3. Arrêtez le projet de démarrage rapide dans la section IAM et administration de la console Google Cloud Platform.

  4. Supprimez les identifiants du compte de service : rm ~/Downloads/key.json.

Étapes suivantes

Voici certaines choses que vous pouvez essayer :

  • Examinez les codes pub.py et sub.py du guide de démarrage rapide, puis parcourez les autres exemples de Cloud Pub/Sub sur Github. À titre d'exercice, créez une version de pub.py qui publie l'heure locale toutes les secondes.

  • Apprenez à traiter des messages par lot.

  • Traitez un volume important d'abonnements Cloud Pub/Sub avec Cloud Dataflow.

  • À l'aide des abonnements push, recevez des messages déclenchant des points de terminaison App Engine ou Cloud Functions.

  • Récupérez les messages précédemment confirmés à l'aide de la fonctionnalité de réouverture. Par défaut, Cloud Pub/Sub supprime les messages confirmés des abonnements. Dans ce démarrage rapide, par exemple, vous ne pourrez pas réexécuter sub.py pour recevoir le message "Hello, World!" une nouvelle fois. La fonctionnalité de réouverture vous permet de configurer des abonnements pour recevoir des messages après confirmation de leur réception.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation sur Cloud Pub/Sub