Mettez en pratique vos compétences dans la console Google Cloud
Instructions et exigences de configuration de l'atelier
Protégez votre compte et votre progression. Utilisez toujours une fenêtre de navigation privée et les identifiants de l'atelier pour exécuter cet atelier.
Développement d'applications : Développer un service de backend – Java
Ce contenu n'est pas encore optimisé pour les appareils mobiles.
Pour une expérience optimale, veuillez accéder à notre site sur un ordinateur de bureau en utilisant un lien envoyé par e-mail.
Présentation
Dans cet atelier, vous allez développer un service de backend pour une application Quiz en ligne, afin de traiter les commentaires des utilisateurs et d'enregistrer des scores.
L'application Quiz se compose de deux parties : l'application Web qui s'exécute dans la première fenêtre Cloud Shell et l'application du nœud de calcul qui s'exécute dans la deuxième fenêtre Cloud Shell.
L'application Web gère la logique d'envoi des commentaires de l'utilisateur à un sujet Pub/Sub.
L'application du nœud de calcul écoute les commentaires fournis par l'utilisateur, puis effectue une analyse des sentiments qu'elle enregistre dans une base de données (Cloud Spanner).
Ce processus s'appuie sur les produits et les services de Google Cloud Platform (GCP) :
Cloud Pub/Sub alerte l'application du nœud de calcul abonnée au sujet des nouveaux scores et commentaires, et les lui transmet pour analyse.
Cloud Natural Language réalise l'analyse des sentiments à partir des commentaires.
Cloud Spanner sert de base de données à l'application Quiz.
Objectifs
Dans cet atelier, vous apprendrez à effectuer les opérations suivantes :
Créer et publier des messages dans un sujet Cloud Pub/Sub
Créer un abonnement au sujet pour recevoir les messages dans une application de nœud de calcul distincte
Réaliser une analyse des sentiments à partir des commentaires
Créer une instance et un schéma de base de données Cloud Spanner, et insérer des données dans la base
Avant de commencer l'atelier
Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
Cliquez sur Ouvrir la console Google.
Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Activer Google Cloud Shell
Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.
Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".
Cliquez sur Continuer.
Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :
gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project =
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Préparer l'application Quiz
Dans cette section, vous allez accéder à Cloud Shell, cloner le dépôt Git qui contient l'application Quiz, configurer les variables d'environnement et exécuter l'application.
Cloner le code source dans Cloud Shell
Saisissez la commande suivante pour cloner le dépôt associé à ce cours :
Un résultat semblable à celui-ci indique que l'application est en cours d'exécution :
20:55:20.756 [restartedMain] INFO c.g.training.appdev.QuizApplication - Started QuizApplication in 20:55:20.756
Configurer l'application de nœud de calcul
Cliquez sur Ouvrir un nouvel onglet à droite de l'onglet Cloud Shell pour ouvrir une deuxième fenêtre Cloud Shell.
Saisissez la commande suivante pour changer de répertoire de travail :
cd ~/pubsub-languageapi-spanner/start
Préparez l'environnement dans la deuxième fenêtre Cloud Shell :
. prepare_worker_environment.sh
Ce fichier de script :
exporte les variables d'environnement GCLOUD_PROJECT et GCLOUD_BUCKET ;
crée et configure un compte de service GCP ;
affiche l'ID du projet Google Cloud Platform.
À présent, lancez l'application du nœud de calcul :
mvn exec:java@worker
Examiner l'application Quiz
Toujours dans la deuxième fenêtre Cloud Shell, cliquez sur Aperçu sur le Web > Prévisualiser sur le port 8080 pour prévisualiser l'application Quiz.
Dans la barre de navigation, cliquez sur Take Test (Faire le test).
Cliquez sur Places (Lieux).
Répondez à la question.
Une fois que vous avez répondu à la question, un dernier écran vous invitant à laisser un commentaire s'affiche.
Les personnes qui ont répondu au questionnaire peuvent le noter et saisir un commentaire.
Revenez à Cloud Shell. Appuyez sur Ctrl+C dans chacune des deux fenêtres pour arrêter respectivement l'application Web et l'application de nœud de calcul.
Tâche 2 : Examiner le code de l'application Quiz
Dans cette section, vous allez examiner la structure des fichiers qui influent sur l'application Quiz.
Au cours de cet atelier, vous allez consulter et modifier des fichiers. Vous pouvez utiliser les éditeurs de script shell installés sur Cloud Shell, tels que nano ou vim, ou encore l'éditeur de code de Cloud Shell. L'éditeur de code utilisé dans le cadre de cet atelier est celui de Cloud Shell.
Lancer l'éditeur de code Cloud Shell
Dans Cloud Shell, cliquez sur Ouvrir l'éditeur.
Examiner la structure du code de l'application GCP
Accédez au dossier /pubsub-languageapi-spanner/start dans le panneau de l'explorateur de fichiers situé à gauche de l'éditeur.
Ensuite, développez le dossier /src/main/java/com/google/training/appdev. Tous les chemins de code Java sont relatifs à ce dossier.
Sélectionnez le fichier Feedback.java dans le dossier .../services/gcp/domain.
Ce fichier contient une classe de modèle représentant les commentaires envoyés par les utilisateurs qui ont répondu au questionnaire.
Sélectionnez le fichier PublishService.java dans le dossier .../services/gcp/pubsub.
Ce fichier contient une classe de service permettant aux applications de publier des commentaires dans un sujet Cloud Pub/Sub.
Sélectionnez le fichier LanguageService.java dans le dossier .../services/gcp/languageapi.
Ce fichier contient une classe de service permettant aux utilisateurs d'envoyer du texte à l'API Cloud Natural Language ML et de recevoir de celle-ci le score obtenu à l'analyse des sentiments.
Sélectionnez le fichier SpannerService.java dans le dossier .../services/gcp/spanner.
Ce fichier contient une classe de service permettant aux utilisateurs d'enregistrer les données des commentaires et des réponses de l'API Natural Language dans une instance de base de données Cloud Spanner.
Examiner les codes de l'application Web et de l'application de backend
Sélectionnez le fichier QuizEndpoint.java dans le dossier .../api.
Le gestionnaire des messages POST envoyés à la route /api/quizzes/feedback/:quiz publie sur Pub/Sub les données de commentaires reçues du client.
Sélectionnez le fichier ConsoleApp.java dans le dossier .../backend.
Ce fichier s'exécute en tant qu'application de console distincte pour consommer les messages distribués à un abonnement Pub/Sub.
Tâche 3 : Utiliser Cloud Pub/Sub
L'application Quiz récupère les réponses et les commentaires entrés par les utilisateurs dans l'interface du questionnaire à l'aide d'une fonction Pub/Sub.
Dans cette section, vous allez créer un sujet et un abonnement Cloud Pub/Sub dans votre projet GCP, puis publier et récupérer un message.
Créer un sujet Cloud Pub/Sub
Dans la console, accédez au menu de navigation > Pub/Sub > Sujets, puis cliquez sur Créer un sujet.
Définissez l'ID du sujet sur feedback (commentaires), puis cliquez sur CRÉER UN SUJET.
La vue "Détails du sujet" s'affiche :
Créer un abonnement Cloud Pub/Sub
Revenez à la deuxième fenêtre Cloud Shell.
Saisissez la commande suivante pour créer un abonnement Cloud Pub/Sub nommé cloud-shell-subscription associé au sujet feedback :
gcloud pubsub subscriptions create cloud-shell-subscription --topic feedback
Remarque : Si vous recevez un message d'erreur indiquant que le compte actif ne dispose pas d'identifiants valides, patientez une minute, puis réessayez la commande.
Publier un message dans un sujet Cloud Pub/Sub
Publiez le message "Hello World" dans le sujet feedback, dans la deuxième fenêtre Cloud Shell :
Récupérer un message à partir d'un abonnement Cloud Pub/Sub
Pour extraire le message du sujet feedback avec confirmation automatique du message dans la deuxième fenêtre Cloud Shell, saisissez la commande suivante :
Tâche 4 : Publier des messages sur Cloud Pub/Sub par programmation
Dans cette section, vous allez rédiger du code pour publier des messages sur Cloud Pub/Sub.
Remarque : Modifiez le code dans les sections marquées comme suit :
// TODO
// END TODO
Pour parfaire votre apprentissage, examinez le code, les commentaires intégrés et la documentation sur les API concernées.
Publier un message Pub/Sub
Ouvrez le fichier .../services/gcp/pubsub/PublishService.java dans l'éditeur de code.
Modifiez le fichier en ajoutant du code comme indiqué dans les instructions.
Déclarez deux chaînes finales statiques pour les éléments PROJECT_ID et TOPIC_NAME :
// TODO: Declare and initialize two Strings,
// PROJECT_ID and TOPIC_NAME
private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId();
private static final String TOPIC_NAME = "feedback";
// END TODO
Passez à la méthode publishFeedback(...) et créez un objet TopicName avec les chaînes PROJECT_ID et TOPIC_NAME.
Cet objet fait référence au sujet Cloud Pub/Sub que vous venez de créer :
// TODO: Create a TopicName object
// for the feedback topic in the project
TopicName topicName = TopicName.of(PROJECT_ID, TOPIC_NAME);
// END TODO
Déclarez un objet Publisher et définissez-le sur null :
// TODO: Declare a publisher for the topic
Publisher publisher = null;
// END TODO
Cet objet sera initialisé dans le bloc try qui suit.
Accédez au bloc try, puis initialisez l'objet publisher à l'aide de son compilateur :
// TODO: Initialize the publisher
// using a builder and the topicName
publisher = Publisher.newBuilder(topicName).build();
// END TODO
Copiez la chaîne JSON sérialisée feedbackMessage dans une chaîne ByteString :
// TODO: Copy the serialized message
// to a byte string
ByteString data = ByteString.copyFromUtf8(feedbackMessage);
// END TODO
Déclarez un objet PubsubMessage, puis initialisez le message à l'aide de son compilateur :
// TODO: Create a Pub/Sub message using a
// builder; set the message data
PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build();
// END TODO
Publiez le message à l'aide de l'objet publisher et attribuez la valeur renvoyée à l'objet messageIdFuture :
// TODO: Publish the message,
// assign to the messageIdFuture
messageIdFuture = publisher.publish(pubsubMessage);
// END TODO
Accédez au dernier bloc et récupérez le messageId Pub/Sub à partir de l'objet messageIdFuture :
// TODO: Get the messageId from
// the messageIdFuture
String messageId = messageIdFuture.get();
// END TODO
Pour clôturer le code de publication, arrêtez l'objet publisher :
// TODO: Shutdown the publisher
// to free up resources
if (publisher != null) {
publisher.shutdown();
}
// END TODO
Enregistrez le fichier services/gcp/pubsub/PublishService.java.
Rédiger le code qui exploite la fonctionnalité de publication Pub/Sub
Dans le fichier .../api/QuizEndpoint.java, déclarez un nouveau champ PublishService nommé publishService.
Appliquez l'annotation Spring @Autowired :
// TODO: Declare the publishService
@Autowired
private PublishService publishService;
// END TODO
Dans la méthode processFeedback(...) qui gère les requêtes POST envoyées à la route /feedback/:quiz, appelez la méthode publishService.publishFeedback(feedback) :
// TODO: Publish the feedback to Pub/Sub
publishService.publishFeedback(feedback);
// END TODO
Enregistrez le fichier /api/QuizEndpoint.java.
Exécuter l'application et créer un message Pub/Sub
Dans la première fenêtre Cloud Shell, redémarrez l'application Web (si elle est en cours d'exécution, arrêtez-la et démarrez-la) :
mvn spring-boot:run
Prévisualisez l'application Web. Pour ce faire, cliquez sur Take Test > Places (Faire le test > Lieux).
Répondez à la question, sélectionnez une note, saisissez un commentaire, puis cliquez sur Send Feedback (Envoyer les commentaires).
Dans la deuxième fenêtre Cloud Shell, saisissez la commande suivante pour extraire un message de cloud-shell-subscription :
Tâche 5 : S'abonner à des sujets Cloud Pub/Sub par programmation
Dans cette section, vous allez rédiger le code qui crée un abonnement et permet de recevoir des notifications de message d'un sujet Cloud Pub/Sub dans l'application de nœud de calcul.
Rédiger le code qui crée un abonnement Cloud Pub/Sub et permet de recevoir des messages
Ouvrez le fichier ...backend/ConsoleApp.java dans l'éditeur de code.
Modifiez le fichier en ajoutant du code comme indiqué dans les instructions.
Passez les blocs TODO pour languageService et spannerService. Vous y reviendrez plus tard.
Dans la méthode main(), créez un objet SubscriptionName représentant un nouvel abonnement nommé "worker1-subscription" :
// TODO: Create the Pub/Sub subscription name
ProjectSubscriptionName subscription =
ProjectSubscriptionName.of(projectId,
"worker1-subscription");
// END TODO
Créez un objet SubscriptionAdminClient à l'aide d'un bloc try :
Remarque : Dans ce même bloc try, créez un abonnement pour le sujet feedback à l'aide du client d'administration des abonnements.
N'oubliez pas l'accolade fermante.
```JAVA
// TODO: Create the subscriptionAdminClient
try (SubscriptionAdminClient subscriptionAdminClient =
SubscriptionAdminClient.create()) {
// TODO: create the Pub/Sub subscription
// using the subscription name and topic
subscriptionAdminClient.createSubscription(
subscription, topic,
PushConfig.getDefaultInstance(), 0);
// END TODO
}
// END TODO
```
Accédez au code qui crée un MessageReceiver, puis, dans la section qui remplace receiveMessage(...), extrayez les données du message sous forme de chaîne :
// TODO: Extract the message data as a JSON String
String fb = message.getData().toStringUtf8();
// END TODO
Confirmez le message à l'aide de l'objet consumer :
// TODO: Ack the message
consumer.ack();
// END TODO
Après le code qui initialise un ObjectMapper, désérialisez les données du message au format "chaîne JSON" dans un objet feedback :
// TODO: Deserialize the JSON String
// representing the feedback
// Print out the feedback
Feedback feedback = mapper.readValue(
fb, Feedback.class);
System.out.println("Feedback received: "
+ feedback);
// END TODO
Après le bloc qui crée le MessageReceiver, déclarez un Subscriber et initialisez-le avec la valeur "null".
Ignorez les prochains blocs TODO et recherchez celui-ci :
// TODO: Declare a subscriber
Subscriber subscriber = null;
// END TODO
Accédez au bloc try et initialisez le Subscriber à l'aide de son compilateur par défaut. Cela nécessite un abonnement et un objet "receiver" :
// TODO: Initialize the subscriber using
// its default builder
// with a subscription and receiver
subscriber = Subscriber.newBuilder(
subscription, receiver).build();
// END TODO
Ajoutez un écouteur à l'objet "subscriber" pour afficher les erreurs :
// TODO: Add a listener to the subscriber
subscriber.addListener(
new Subscriber.Listener() {
@Override
public void failed(
Subscriber.State from,
Throwable failure) {
System.err.println(failure);
}
},
MoreExecutors.directExecutor());
// END TODO
Démarrez le "subscriber" :
// TODO: Start subscribing
subscriber.startAsync().awaitRunning();
// END TODO
Passez au bloc final. Rédigez le code qui arrête le "subscriber" et supprime l'abonnement :
// TODO: Stop subscribing
if (subscriber != null) {
subscriber.stopAsync().awaitTerminated();
}
// END TODO
// TODO: Delete the subscription
try (SubscriptionAdminClient
subscriptionAdminClient =
SubscriptionAdminClient.create()) {
subscriptionAdminClient.deleteSubscription(
subscription);
}
// END TODO
Enregistrez le fichier backend/ConsoleApp.java.
Exécuter l'application Web et l'application de nœud de calcul, et créer un message Pub/Sub
Dans la première fenêtre Cloud Shell, arrêtez et démarrez l'application Web :
mvn spring-boot:run
Dans la seconde fenêtre Cloud Shell, démarrez l'application de nœud de calcul :
mvn compile exec:java@worker
Dans Cloud Shell, cliquez sur Aperçu sur le Web > Prévisualiser sur le port 8080 pour prévisualiser l'application Quiz.
Cliquez sur Take Test (Faire le test).
Cliquez sur Places (Lieux).
Répondez à la question, sélectionnez une note, saisissez un commentaire, puis cliquez sur Send Feedback (Envoyer les commentaires).
Revenez à la deuxième fenêtre Cloud Shell.
Vous devriez constater que l'application de nœud de calcul a reçu le message de commentaire via son gestionnaire et l'a affiché dans la deuxième fenêtre Cloud Shell. Voici un exemple de message de commentaire :
Feedback received: Feedback{email='app.dev.student@dummy.org', quiz='places', feedback='love the test', rating=5, timestamp=1527564677609, sentimentScore=0.0}
Remarque : Vous pouvez ignorer en toute sécurité le résultat de la commande WARNING lié à une opération d'accès réflexif illégale.
Arrêtez l'application Web et l'application de console.
Tâche 6 : Utiliser l'API Cloud Natural Language
Dans cette section, vous allez rédiger le code qui effectue l'analyse des sentiments sur les commentaires envoyés par les utilisateurs. Pour en savoir plus, consultez cette page sur l'API Google Cloud Natural Language.
Rédiger le code qui appelle l'API Cloud Natural Language
Revenez à l'éditeur et ouvrez le fichier LanguageService.java dans le dossier services/gcp/languageapi.
Accédez à la méthode analyzeSentiment(...) et créez un objet LanguageServiceClient dans un bloc try.
Notez qu'à cette étape, le code que vous copiez dans le fichier ne comprend pas de texte // END TODO :
// TODO: Create the LanguageServiceClient object
try (LanguageServiceClient language =
LanguageServiceClient.create()) {
Créez un objet Document à l'aide de son compilateur et configurez-le avec le type et le contenu du document :
// TODO: Create a new Document object
// using the builder
// Set the content and type
Document doc = Document.newBuilder()
.setContent(feedback)
.setType(Document.Type.PLAIN_TEXT)
.build();
// END TODO
Avec l'objet client Natural Language, analysez le sentiment du document et attribuez le résultat de cette analyse à un objet Sentiment :
// TODO: Use the client to analyze
// the sentiment of the feedback
Sentiment sentiment = language
.analyzeSentiment(doc)
.getDocumentSentiment();
// END TODO
Ensuite, renvoyez le score de sentiment à partir de l'objet sentiment :
// TODO: Return the sentiment score
return sentiment.getScore();
// END TODO
}
N'oubliez pas l'accolade fermante.
Enregistrez le fichier.
Rédiger le code qui exploite les fonctionnalités de l'API Natural Language
Revenez au fichier backend/ConsoleApp.java.
Accédez à la méthode main(...).
Dans la méthode main(), créez un objet SubscriptionName représentant un nouvel abonnement nommé "worker2-subscription".
Cet abonnement remplace l'abonnement "worker1-subscription".
// TODO: Create the Pub/Sub subscription name
ProjectSubscriptionName subscription =
ProjectSubscriptionName.of(projectId,
"worker2-subscription");
// END TODO
Au point indiqué en commentaire, créez l'instance LanguageService avec la méthode statique create() :
// TODO: Create the languageService
LanguageService languageService = LanguageService.create();
// END TODO
Au point indiqué en commentaire, procédez à la détection du sentiment dans les commentaires avec l'objet languageService :
// TODO: Use the Natural Language API to analyze sentiment
float sentimentScore = languageService.analyzeSentiment(
feedback.getFeedback());
// END TODO
Ensuite, consignez le score dans la console et attribuez une nouvelle propriété de score à l'objet feedback :
// TODO: Set the feedback object sentiment score
feedback.setSentimentScore(sentimentScore);
System.out.println("Score is: " + sentimentScore);
// END TODO
Enregistrez le fichier.
Exécuter l'application Web et l'application du nœud de calcul, et tester l'API Natural Language
Revenez à la première fenêtre Cloud Shell et redémarrez l'application Web.
Passez à la deuxième fenêtre Cloud Shell, puis redémarrez l'application du nœud de calcul.
Prévisualisez l'application Web, puis cliquez sur Take Test > Places (Faire le test > Lieux).
Répondez aux questions, sélectionnez une note, saisissez un commentaire, puis cliquez sur Send Feedback (Envoyer les commentaires).
Revenez à la deuxième fenêtre Cloud Shell.
Le résultat indique que l'application du nœud de calcul a appelé l'API Cloud Natural Language et affiche le score des sentiments dans la console à côté de Score is:.
Par exemple :
Feedback received: Feedback{email='app.dev.student@dummy.org', quiz='places', feedback='loved the test', rating=1, timestamp=1570116062687, sentimentScore=0.0}
Score is: 0.8
Arrêtez l'application Web et l'application de nœud de calcul.
Tâche 7 : Conserver les données dans Cloud Spanner
Dans cette section, vous allez créer une instance, une base de données et une table Cloud Spanner. Ensuite, vous allez rédiger le code permettant de conserver les données de commentaires dans la base de données.
Créer une instance Cloud Spanner
Revenez à la console Cloud.
Accédez au menu de navigation > Spanner.
Cliquez sur CRÉER UNE INSTANCE.
Définissez Nom de l'instance sur quiz-instance.
Dans la section Sélectionner une configuration, choisissez us-central1 via le menu déroulant "Sélectionner une Configuration".
Cliquez sur Créer.
Créer une base de données et une table Cloud Spanner
Sur la page Détails de l'instance de quiz-instance, cliquez sur CRÉER UNE BASE DE DONNÉES.
Dans le champ Nom de la base de données, saisissez quiz-database.
Dans la zone de texte sous Define your schema (Définir le schéma), saisissez l'instruction SQL suivante :
Rédiger le code permettant de conserver les données dans Cloud Spanner
Remarque : Pour plus d'informations sur les API Cloud Spanner, consultez API et documentation de référence.
Pour plus d'informations sur les API spécifiques utilisées dans cette section, dans le volet gauche de la page "API et documentation de référence", section "API et documentation de référence", cliquez sur Bibliothèques clientes > Documentation de référence sur Java.
Revenez à l'éditeur de code et accédez à la méthode insertFeedback(...) dans le fichier ...services/gcp/spanner/SpannerService.java.
Obtenez une référence à Cloud Spanner :
// TODO: Get a reference to the Spanner API
SpannerOptions options =
SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
// END TODO
Obtenez une référence à la base de données Spanner via l'objet DatabaseId :
// TODO: Get a reference to the quiz-instance
// and its quiz-database
DatabaseId db = DatabaseId.of(
options.getProjectId(),
"quiz-instance",
"quiz-database");
// END TODO
Obtenez une référence au client de base de données Cloud Spanner :
// TODO: Get a client for the quiz-database
DatabaseClient dbClient =
spanner.getDatabaseClient(db);
// END TODO
Créez un objet List<Mutation> pour référencer toutes les modifications qui seront apportées à la base de données :
// TODO: Create a list to hold mutations
// against the database
List<Mutation> mutations = new ArrayList<>();
// END TODO
// END TODO
Ajoutez la Mutation qui représente une insertion dans la table des commentaires, avec des données extraites de l'objet feedback :
// TODO: Add an insert mutation
mutations.add(
// TODO: Build a new insert mutation
Mutation.newInsertBuilder("Feedback")
.set("feedbackId")
.to(feedback.getEmail() + '_' +
feedback.getQuiz() + "_" +
feedback.getTimestamp())
.set("email")
.to(feedback.getEmail())
.set("quiz")
.to(feedback.getQuiz())
.set("feedback")
.to(feedback.getFeedback())
.set("rating")
.to(feedback.getRating())
.set("score")
.to(
feedback.getSentimentScore())
.set("timestamp")
.to(feedback.getTimestamp())
.build());
// END TODO
À l'aide du client de base de données, écrivez les mutations :
// TODO: Write the change to Spanner
dbClient.write(mutations);
// END TODO
Enregistrez le fichier.
Rédiger le code qui exploite les fonctionnalités de Cloud Spanner
Accédez à la méthode main(...) dans le fichier backend/ConsoleApp.java.
Dans la méthode main(), créez un objet SubscriptionName représentant un nouvel abonnement nommé "worker3-subscription".
Cet abonnement remplace l'abonnement "worker2-subscription" :
// TODO: Create the Pub/Sub subscription name
ProjectSubscriptionName subscription =
ProjectSubscriptionName.of(projectId,
"worker3-subscription");
// END TODO
Au point indiqué en commentaire, créez l'instance SpannerService :
// TODO: Create the spannerService
SpannerService spannerService = SpannerService.create();
// END TODO
Au point indiqué en commentaire, insérez les commentaires dans la base de données avec l'objet spannerService et inscrivez un message dans la console :
// TODO: Insert the feedback into Cloud Spanner
spannerService.insertFeedback(feedback);
System.out.println("Feedback saved");
// END TODO
Enregistrez le fichier.
Exécuter l'application Web et l'application du nœud de calcul, et tester Cloud Spanner
Revenez à la première fenêtre Cloud Shell et démarrez l'application Web.
Passez à la deuxième fenêtre Cloud Shell et redémarrez l'application du nœud de calcul.
Prévisualisez l'application Quiz. Cliquez sur Take Test > Places (Faire le test > Lieux).
Répondez aux questions, sélectionnez une note, saisissez un commentaire, puis cliquez sur Send Feedback (Envoyer les commentaires).
Revenez à la deuxième fenêtre Cloud Shell.
Vous devriez constater que l'application du nœud de calcul a appelé l'API Cloud Spanner et affiché le message dans la fenêtre de la console.
Revenez à la console. Accédez au menu de navigation > Spanner.
Sélectionnez quiz-instance > quiz-database, et cliquez sur Requête dans le panneau de gauche.
Pour exécuter une requête dans la boîte de dialogue Requête, saisissez SELECT * FROM Feedback, puis cliquez sur Exécuter :
SELECT * FROM Feedback
Vous devriez voir apparaître la nouvelle entrée de commentaire dans la base de données Cloud Spanner. Cette entrée comprend les données du message provenant de Cloud Pub/Sub et le score de l'application Quiz provenant de l'API Cloud Natural Language.
Terminer l'atelier
Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.
Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.
Le nombre d'étoiles correspond à votre degré de satisfaction :
1 étoile = très insatisfait(e)
2 étoiles = insatisfait(e)
3 étoiles = ni insatisfait(e), ni satisfait(e)
4 étoiles = satisfait(e)
5 étoiles = très satisfait(e)
Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.
Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.
Copyright 2026 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés auxquelles ils sont associés.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.
Ce contenu n'est pas disponible pour le moment
Nous vous préviendrons par e-mail lorsqu'il sera disponible
Parfait !
Nous vous contacterons par e-mail s'il devient disponible
Un atelier à la fois
Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci
Utilisez la navigation privée pour effectuer l'atelier
Le meilleur moyen d'exécuter cet atelier consiste à utiliser une fenêtre de navigation privée. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
Dans cet atelier, vous allez améliorer l'application Quiz en ligne en développant un service de backend permettant de traiter les commentaires des utilisateurs et d'enregistrer les scores.
Durée :
0 min de configuration
·
Accessible pendant 120 min
·
Terminé après 120 min