arrow_back

Desarrollo de aplicaciones: Cómo desarrollar un servicio de backend - Java

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Desarrollo de aplicaciones: Cómo desarrollar un servicio de backend - Java

Lab 2 horas universal_currency_alt 5 créditos show_chart Avanzado
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Descripción general

En este lab, desarrollarás un servicio de backend para una aplicación Quiz en línea con el fin de procesar los comentarios de usuarios y guardar puntuaciones.

La aplicación Quiz tiene dos partes: la aplicación web que se ejecutará en la primera ventana de Cloud Shell y la aplicación trabajadora que se ejecutará en la segunda ventana de Cloud Shell.

  • Aplicación web: Administra la lógica del envío de comentarios del usuario a un tema de Pub/Sub.
  • Aplicación trabajadora: Escucha los comentarios proporcionados por el usuario para realizar un análisis de opiniones y almacenarlos en una base de datos (Cloud Spanner).

Este proceso aprovecha los productos y servicios de Google Cloud:

  • Cloud Pub/Sub: El tema alerta y proporciona la aplicación trabajadora suscrita a nuevas puntuaciones y comentarios para su análisis.
  • Cloud Natural Language: Proporciona análisis de opiniones sobre los comentarios.
  • Cloud Spanner: Es la base de datos de la aplicación Quiz.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Crear y publicar mensajes en un tema de Cloud Pub/Sub
  • Suscribirte al tema para recibir mensajes en una aplicación trabajadora separada
  • Realizar análisis de opiniones sobre los comentarios
  • Crear una instancia y un esquema de base de datos de Cloud Spanner, para luego agregar información a la base de datos

Configuración y requisitos

En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Accede a Qwiklabs desde una ventana de incógnito.

  2. Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
    No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.

  3. Cuando esté listo, haga clic en Comenzar lab.

  4. Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.

  5. Haga clic en Abrir Google Console.

  6. Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
    Si usa otras credenciales, se generarán errores o incurrirá en cargos.

  7. Acepta las condiciones y omite la página de recursos de recuperación.

Activa Google Cloud Shell

Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.

Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

  2. Haz clic en Continuar.

El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.

  • Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Tarea 1. Prepara la aplicación Quiz

En esta sección, accederás a Cloud Shell, clonarás el repositorio de Git que contiene la aplicación Quiz, configurarás las variables de entorno y ejecutarás la aplicación.

Clona el código fuente en Cloud Shell

  1. Escribe el siguiente comando para clonar el repositorio de la clase:
git clone --depth=1 https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Crea un vínculo simbólico al directorio de trabajo:
ln -s ~/training-data-analyst/courses/developingapps/v1.3/java/pubsub-languageapi-spanner ~/pubsub-languageapi-spanner

Configura la aplicación web

En esta sección, configurarás dependencias y ejecutarás la aplicación web.

  1. Navega al directorio que contenga los archivos de muestra de este lab:

    cd ~/pubsub-languageapi-spanner/start
  2. Configura la aplicación web:

    . prepare_web_environment.sh

    Este archivo de secuencia de comandos realiza lo siguiente:

    • Crea una aplicación de App Engine.
    • Exporta las variables de entorno: GCLOUD_PROJECT y GCLOUD_BUCKET.
    • Ejecuta mvn clean install.
    • Crea entidades en Cloud Datastore.
    • Imprime el ID del proyecto de GCP.

    Puedes ejecutar esta aplicación cuando veas resultados similares a lo siguiente:

    [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 14.111 s [INFO] Finished at: 2021-12-06T20:54:09Z [INFO] ------------------------------------------------------------------------ Project ID: qwiklabs-gcp-02-6c9b7cfe44c0
  3. Ejecuta la aplicación web:

    mvn spring-boot:run

    La aplicación está en ejecución cuando se ve un resultado similar al siguiente:

    20:55:20.756 [restartedMain] INFO c.g.training.appdev.QuizApplication - Started QuizApplication in 20:55:20.756

Configura la aplicación trabajadora

  1. Haz clic en Abrir una pestaña nueva a la derecha de la pestaña de Cloud Shell para abrir una segunda ventana.

  2. Escribe el siguiente comando para cambiar el directorio de trabajo:

    cd ~/pubsub-languageapi-spanner/start
  3. Prepara el entorno en la segunda ventana de Cloud Shell:

    . prepare_worker_environment.sh

    Este archivo de secuencia de comandos realiza lo siguiente:

    • Exporta las variables de entorno GCLOUD_PROJECT y GCLOUD_BUCKET.
    • Crea y configura una cuenta de servicio de Google Cloud
    • Imprime el ID del proyecto de Google Cloud.
  4. Ahora, inicia la aplicación trabajadora:

    mvn exec:java@worker

Revisa la aplicación Quiz

  1. Aún en la segunda ventana de Cloud Shell, haz clic en Vista previa en la web > Vista previa en el puerto 8080 para obtener una vista previa de la aplicación Quiz.

  2. En la barra de navegación, haz clic en Take Test.

  3. Haz clic en Places.

  4. Responde la pregunta.

    Una vez que hayas respondido, deberías ver una pantalla final en la que puedes enviar tus comentarios.

    Los participantes pueden seleccionar una calificación y escribir comentarios.

  5. Vuelve a Cloud Shell. Presiona Ctrl+C en la primera y la segunda ventana para detener las aplicaciones web y trabajadora.

Tarea 2. Examina el código de la aplicación Quiz

En esta sección, examinarás la estructura del archivo y los archivos que influyen en la aplicación Quiz.

En este lab, visualizarás y editarás archivos. Puedes usar los editores de shell que están instalados en Cloud Shell, como nano o vim, o bien el editor de código de Cloud Shell. Este lab usa el editor de código de Cloud Shell.

Inicia el editor de Cloud Shell

  • En Cloud Shell, haz clic en Abrir editor.

Revisa la estructura del código de la aplicación de Google Cloud

  1. Navega a la carpeta /pubsub-languageapi-spanner/start a través del panel de navegador de archivos que se encuentra en el lado izquierdo del editor.

  2. Ahora, expande la carpeta /src/main/java/com/google/training/appdev. Todas las rutas de código de Java están relacionadas con esta carpeta.

  3. Selecciona el archivo Feedback.java en la carpeta .../services/gcp/domain.

Este archivo contiene una clase de modelo que representa los comentarios enviados por las personas que realizaron el test.

  1. Selecciona el archivo PublishService.java en la carpeta .../services/gcp/pubsub.

Este archivo contiene una clase de servicio que permite a las aplicaciones publicar mensajes de comentarios en un tema de Cloud Pub/Sub.

  1. Selecciona el archivo LanguageService.java en la carpeta .../services/gcp/languageapi.

Este archivo contiene una clase de servicio que permite a los usuarios enviar texto a la API de AA de Cloud Natural Language para que reciba la puntuación de las opiniones de la API.

  1. Selecciona el archivo SpannerService.java en la carpeta .../services/gcp/spanner.

Este archivo contiene una clase de servicio que permite a los usuarios guardar los comentarios y datos de las respuestas de la API de Natural Language en una instancia de base de datos de Cloud Spanner.

Revisa el código de la aplicación web y de backend

  1. Selecciona el archivo QuizEndpoint.java en la carpeta .../api.

El controlador de los mensajes POST enviados a la ruta /api/quizzes/feedback/:quiz publica en Pub/Sub los datos de los comentarios recibidos del cliente.

  1. Selecciona el archivo ConsoleApp.java en la carpeta .../backend.

Este archivo se ejecuta como una aplicación de la consola independiente que consume los mensajes entregados a una suscripción de Pub/Sub.

Tarea 3: Trabaja con Cloud Pub/Sub

La aplicación Quiz usa una función de Pub/Sub para recuperar las respuestas y los comentarios que ingresa un usuario mediante la interfaz de cuestionarios.

En esta sección, crearás un tema y una suscripción de Cloud Pub/Sub en tu proyecto de Google Cloud y, luego, publicarás un mensaje y lo recuperarás.

Crea un tema de Cloud Pub/Sub

  1. En la consola, haz clic en Menú de navegación > Pub/Sub > Topics y, luego, en Crear un tema.

  2. Establece el ID del tema como feedback y, luego, haz clic en CREAR UN TEMA.

    La vista Detalles del tema abre lo siguiente:

Crea una suscripción a Cloud Pub/Sub

  1. Regresa a la segunda ventana de Cloud Shell.

  2. Escribe el siguiente comando para crear una suscripción de Cloud Pub/Sub llamada cloud-shell-subscription en el tema feedback:

gcloud pubsub subscriptions create cloud-shell-subscription --topic feedback Nota: Si recibes un mensaje de error que dice que la cuenta activa no tiene credenciales válidas, espera un momento y vuelve a intentar con el comando.

Publica un mensaje en un tema de Cloud Pub/Sub

  • En la segunda ventana de Cloud Shell, publica el mensaje "Hello World" en el tema feedback:
gcloud pubsub topics publish feedback --message="Hello World"

Recupera un mensaje de una suscripción de Cloud Pub/Sub

  • Para extraer el mensaje del tema feedback con una confirmación automática, en la segunda ventana de Cloud Shell, escribe lo siguiente:
gcloud pubsub subscriptions pull cloud-shell-subscription --auto-ack

Resultado:

Tarea 4: Publica mensajes en Cloud Pub/Sub de manera programática

En esta sección, escribirás código para publicar mensajes en Cloud Pub/Sub.

Nota: Actualiza el código dentro de las secciones marcadas de la siguiente manera:

// TODO

// END TODO

Para maximizar tu aprendizaje, revisa el código, los comentarios intercalados y la documentación de la API relacionada.

Publica un mensaje de Pub/Sub

  1. En el editor de código, abre el archivo .../services/gcp/pubsub/PublishService.java. Actualízalo agregando el código como se indica.

  2. Declara dos cadenas finales estáticas para PROJECT_ID y 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
  3. Pasa al método publishFeedback(…) y crea un objeto TopicName con las cadenas PROJECT_ID y TOPIC_NAME.

    El topic name hace referencia al tema de Cloud Pub/Sub que acabas de crear:

    // TODO: Create a TopicName object // for the feedback topic in the project TopicName topicName = TopicName.of(PROJECT_ID, TOPIC_NAME); // END TODO
  4. Declara un objeto Publisher y configúralo como null:

    // TODO: Declare a publisher for the topic Publisher publisher = null; // END TODO

    Se inicializará en el bloque try que sigue.

  5. Pasa al bloque try y, luego, inicializa el objeto publisher con su compilador:

    // TODO: Initialize the publisher // using a builder and the topicName publisher = Publisher.newBuilder(topicName).build(); // END TODO
  6. Copia la cadena feedbackMessage serializada JSON en una ByteString:

    // TODO: Copy the serialized message // to a byte string ByteString data = ByteString.copyFromUtf8(feedbackMessage); // END TODO
  7. Declara un objeto PubsubMessage y, luego, inicializa el mensaje con su compilador:

    // TODO: Create a Pub/Sub message using a // builder; set the message data PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build(); // END TODO
  8. Usa el publicador para publicar el mensaje y asigna el valor de muestra al objeto futuro del ID del mensaje:

    // TODO: Publish the message, // assign to the messageIdFuture messageIdFuture = publisher.publish(pubsubMessage); // END TODO
  9. Pasa al bloque finally y recupera el messageId de Pub/Sub correspondiente al objeto futuro del ID del mensaje:

    // TODO: Get the messageId from // the messageIdFuture String messageId = messageIdFuture.get(); // END TODO
  10. Apaga el publicador para completar el código de publicación:

    // TODO: Shutdown the publisher // to free up resources if (publisher != null) { publisher.shutdown(); } // END TODO
  11. Guarda services/gcp/pubsub/PublishService.java.

Escribe el código para usar la funcionalidad de publicación de Pub/Sub

  1. En el archivo …/api/QuizEndpoint.java, declara un nuevo campo PublishService llamado publishService.

  2. Aplica la anotación Spring @Autowired:

    // TODO: Declare the publishService @Autowired private PublishService publishService; // END TODO
  3. En el método processFeedback(…) que controla las solicitudes POST a la ruta '/feedback/:quiz', invoca el método publishService.publishFeedback(feedback):

    // TODO: Publish the feedback to Pub/Sub publishService.publishFeedback(feedback); // END TODO
  4. Guarda /api/QuizEndpoint.java.

Ejecuta la aplicación y crea un mensaje de Pub/Sub

  1. En la primera ventana de Cloud Shell, reinicia la aplicación web (si se está ejecutando, detenla y vuelve a iniciarla):

    mvn spring-boot:run
  2. Obtén una vista previa de la aplicación web y haz clic en Take Test > Places.

  3. Responde la pregunta, selecciona la calificación, ingresa texto para el comentario y haz clic en Send Feedback.

  4. En la segunda ventana de Cloud Shell, para extraer un mensaje de cloud-shell-subscription, escribe lo siguiente:

    gcloud pubsub subscriptions pull cloud-shell-subscription --auto-ack

Tarea 5. Cómo suscribirse a los temas de Cloud Pub/Sub de manera programática

En esta sección, escribirás el código para crear una suscripción y recibir notificaciones de mensajes sobre un tema de Cloud Sub/Pub en la aplicación trabajadora.

Escribe código para crear una suscripción de Cloud Pub/Sub y recibir mensajes

  1. En el editor de código, abre el archivo ...backend/ConsoleApp.java.

    • Actualízalo agregando el código como se indica.

    • Omite los bloques TODO para languageService y spannerService. Volverás por estos más adelante.

  2. En el método main(), crea un objeto SubscriptionName que represente una suscripción nueva llamada "worker1-subscription":

    // TODO: Create the Pub/Sub subscription name ProjectSubscriptionName subscription = ProjectSubscriptionName.of(projectId, "worker1-subscription"); // END TODO
  3. Crea un objeto SubscriptionAdminClient con un bloque try:

Nota: También en el bloque try, usa el cliente de administrador de suscripción para crear una suscripción nueva en el tema feedback. No olvides la llave de cierre. ```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 ```
  1. Pasa al código que crea un MessageReceiver y, en la anulación receiveMessage(…), extrae los datos del mensaje en una Cadena:

    // TODO: Extract the message data as a JSON String String fb = message.getData().toStringUtf8(); // END TODO
  2. Usa el consumidor para reconocer el mensaje:

    // TODO: Ack the message consumer.ack(); // END TODO
  3. Después del código que inicializa un ObjectMapper, deserializa los datos del mensaje de la cadena JSON en un objeto 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
  4. Después del bloque que crea el MessageReceiver, declara un Subscriber y, luego, inicialízalo como nulo.

    • Omite algunos bloques TODO y busca el siguiente:
    // TODO: Declare a subscriber Subscriber subscriber = null; // END TODO
  5. Desplázate al bloque try y, luego, inicializa el Subscriber con tu compilador predeterminado. Esto requiere la suscripción y el receptor:

    // TODO: Initialize the subscriber using // its default builder // with a subscription and receiver subscriber = Subscriber.newBuilder( subscription, receiver).build(); // END TODO
  6. Agrega un objeto de escucha al suscriptor para mostrar los errores:

    // 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
  7. Inicia el suscriptor:

    // TODO: Start subscribing subscriber.startAsync().awaitRunning(); // END TODO
  8. Pasa al bloque final. Escribe el código para detener el suscriptor y borra la suscripción:

    // 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
  9. Guarda backend/ConsoleApp.java.

Ejecuta la aplicación web y trabajadora y, luego, crea un mensaje de Pub/Sub

  1. En la primera ventana de Cloud Shell, detén y, luego, inicia la aplicación web:

    mvn spring-boot:run
  2. En la segunda ventana de Cloud Shell, inicia la aplicación trabajadora:

    mvn compile exec:java@worker
  3. En Cloud Shell, haz clic en Vista previa en la Web > Vista previa en el puerto 8080 para obtener una vista previa de la aplicación Quiz.

  4. Haz clic en Take Test.

  5. Haz clic en Places.

  6. Responde la pregunta, selecciona la calificación, ingresa texto para el comentario y, luego, haz clic en Send Feedback.

  7. Regresa a la segunda ventana de Cloud Shell.

La aplicación trabajadora debería haber recibido el mensaje del comentario a través de su controlador y debería mostrarlo en la segunda ventana de Cloud Shell. El siguiente es un ejemplo de un mensaje de comentario:

Feedback received: Feedback{email='app.dev.student@dummy.org', quiz='places', feedback='love the test', rating=5, timestamp=1527564677609, sentimentScore=0.0} Nota: Puedes ignorar el resultado WARNING de forma segura en relación con una operación de acceso reflectante ilegal.
  1. Detén las aplicaciones web y de consola.

Tarea 6. Usa la API de Cloud Natural Language

En esta sección, escribirás el código para realizar un análisis de opiniones sobre el texto del comentario enviado por el usuario. Para obtener más información consulta API de Google Cloud Natural Language.

Escribe código para invocar la API de Cloud Natural Language

  1. Regresa al editor y abre el archivo LanguageService.java en la carpeta services/gcp/languageapi.

  2. Desplázate al método analyzeSentiment(…) y crea un objeto LanguageServiceClient en un bloque try.

    • En este paso, ten en cuenta que no hay un // END TODO en el contenido que copias en el archivo:
    // TODO: Create the LanguageServiceClient object try (LanguageServiceClient language = LanguageServiceClient.create()) {
  3. Crea un objeto Document nuevo con su compilador y configura este objeto con el contenido y tipo del documento:

    // 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
  4. Usa el objeto cliente de Natural Language para analizar las opiniones del documento y asigna el resultado a un objeto Sentiment:

    // TODO: Use the client to analyze // the sentiment of the feedback Sentiment sentiment = language .analyzeSentiment(doc) .getDocumentSentiment(); // END TODO
  5. Luego, muestra la puntuación de las opiniones desde el objeto sentiment:

    // TODO: Return the sentiment score return sentiment.getScore(); // END TODO }

    No olvides la llave de cierre.

  6. Guarda el archivo.

Escribe código para usar la funcionalidad de la API de Natural Language

  1. Vuelve al archivo backend/ConsoleApp.java.

  2. Cambia al método main(…).

  3. En el método main(), crea un objeto SubscriptionName que represente una suscripción nueva llamada "worker2-subscription".

    • Esto reemplaza a la "worker1-subscription".
    // TODO: Create the Pub/Sub subscription name ProjectSubscriptionName subscription = ProjectSubscriptionName.of(projectId, "worker2-subscription"); // END TODO
  4. En el punto indicado por los comentarios, crea la instancia LanguageService con su método estático create():

    // TODO: Create the languageService LanguageService languageService = LanguageService.create(); // END TODO
  5. En el punto indicado por los comentarios, usa el objeto languageService para realizar la detección de opiniones en feedback:

    // TODO: Use the Natural Language API to analyze sentiment float sentimentScore = languageService.analyzeSentiment( feedback.getFeedback()); // END TODO
  6. Luego, registra la puntuación en la consola y asigna una propiedad de puntuación nueva al objeto feedback:

    // TODO: Set the feedback object sentiment score feedback.setSentimentScore(sentimentScore); System.out.println("Score is: " + sentimentScore); // END TODO
  7. Guarda el archivo.

Ejecuta las aplicaciones web y trabajadora, y prueba la API de Natural Language

  1. Regresa a la primera ventana de Cloud Shell y reinicia la aplicación web.

  2. Cambia a la segunda ventana de Cloud Shell y reinicia la aplicación trabajadora.

  3. Obtén una vista previa de la aplicación web y, luego, haz clic en Take Test > Places.

  4. Responde las preguntas, selecciona la calificación, ingresa texto para el comentario y haz clic en Send Feedback.

  5. Regresa a la segunda ventana de Cloud Shell.

    En el resultado, se muestra la aplicación trabajadora invocada por la API de Cloud Natural Language y la puntuación de opiniones en la consola junto a Score is:.

    Por ejemplo:

    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
  6. Detén las aplicaciones web y trabajadora.

Tarea 7. Conserva los datos en Cloud Spanner

En esta sección, crearás una instancia, una base de datos y una tabla de Cloud Spanner. Luego, escribirás el código para conservar los datos de los comentarios en la base de datos.

Crea una instancia de Cloud Spanner

  1. Regresa a la consola de Cloud.
  2. Haz clic en el menú de navegación > Spanner.
  3. Haz clic en CREAR INSTANCIA.
  4. Establece el Nombre de la instancia de quiz-instance.
  5. En la sección Elige una configuración, selecciona us-central1 del menú desplegable Selecciona una configuración.
  6. Haz clic en Crear.

Crea una base de datos y una tabla de Cloud Spanner

  1. En la página Detalles de la instancia de quiz-instance, haz clic en CREAR BASE DE DATOS.

  2. Para el Nombre de la base de datos, escribe quiz-database.

  3. En Define your schema, en el cuadro de texto, escribe la siguiente instrucción de SQL:

    CREATE TABLE Feedback ( feedbackId STRING(100) NOT NULL, email STRING(100), quiz STRING(20), feedback STRING(MAX), rating INT64, score FLOAT64, timestamp INT64 ) PRIMARY KEY (feedbackId);

  4. Haz clic en Crear.

Escribe código para conservar datos en Cloud Spanner

Nota: Obtén más información sobre las APIs de Cloud Spanner en APIs y referencia.

Si deseas obtener información sobre las APIs específicas que se usaron en esta sección, en el panel izquierdo de la página de APIs y referencia, en la sección APIs y referencia, haz clic en Bibliotecas cliente > Referencia de Java.
  1. Regresa al editor de código y pasa al método insertFeedback(…) en el archivo …services/gcp/spanner/SpannerService.java.

  2. Obtén una referencia a Cloud Spanner:

    // TODO: Get a reference to the Spanner API SpannerOptions options = SpannerOptions.newBuilder().build(); Spanner spanner = options.getService(); // END TODO
  3. Obtén una referencia a la base de datos de Spanner a través del ID de la base de datos:

    // TODO: Get a reference to the quiz-instance // and its quiz-database DatabaseId db = DatabaseId.of( options.getProjectId(), "quiz-instance", "quiz-database"); // END TODO
  4. Obtén una referencia al cliente de la base de datos de Cloud Spanner:

    // TODO: Get a client for the quiz-database DatabaseClient dbClient = spanner.getDatabaseClient(db); // END TODO
  5. Crea una List<Mutation> nueva para hacer referencia a todos los cambios que se harán en la base de datos:

    // TODO: Create a list to hold mutations // against the database List<Mutation> mutations = new ArrayList<>(); // END TODO // END TODO
  6. Agrega el Mutation que representa un insert en la tabla de feedback. Para ello, usa los datos del objeto 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
  7. Usa el cliente de base de datos para escribir las mutaciones:

    // TODO: Write the change to Spanner dbClient.write(mutations); // END TODO
  8. Guarda el archivo.

Escribe código para usar la funcionalidad de Cloud Spanner

  1. Regresa al método main(...) en el archivo backend/ConsoleApp.java.

  2. En el método main(), crea un objeto SubscriptionName que represente una nueva suscripción llamada "worker3-subscription".

    • Esto reemplaza a la "worker2-subscription":
    // TODO: Create the Pub/Sub subscription name ProjectSubscriptionName subscription = ProjectSubscriptionName.of(projectId, "worker3-subscription"); // END TODO
  3. En el punto indicado por los comentarios, crea la instancia SpannerService:

    // TODO: Create the spannerService SpannerService spannerService = SpannerService.create(); // END TODO
  4. En el punto indicado por los comentarios, usa el objeto spannerService para insertar el feedback en la base de datos y, luego, imprimir un mensaje en la consola:

    // TODO: Insert the feedback into Cloud Spanner spannerService.insertFeedback(feedback); System.out.println("Feedback saved"); // END TODO
  5. Guarda el archivo.

Ejecuta las aplicaciones web y trabajadora, y prueba Cloud Spanner

  1. Regresa a la primera ventana de Cloud Shell y, luego, inicia la aplicación web.

  2. Cambia a la segunda ventana de Cloud Shell y reinicia la aplicación trabajadora.

  3. Obtén una vista previa de la aplicación Quiz y haz clic en Take Test > Places.

  4. Responde las preguntas, selecciona la calificación, ingresa texto para el comentario y haz clic en Send Feedback.

  5. Regresa a la segunda ventana de Cloud Shell.

    Deberías ver que la aplicación trabajadora invocó la API de Cloud Spanner y mostró el mensaje en la ventana de la consola.

  6. Regresa a la consola. Haz clic en el menú de navegación > Spanner.

  7. Selecciona quiz-instance > quiz-database y haz clic en Consulta, en el panel izquierdo.

  8. Para ejecutar una consulta, en el diálogo Consulta, escribe SELECT * FROM Feedback y haz clic en Ejecutar.

SELECT * FROM Feedback

Deberías ver el nuevo registro de comentarios en la base de datos de Cloud Spanner, incluidos los datos del mensaje de Cloud Pub/Sub y la puntuación de Quiz de la API de Cloud Natural Language.

Finalice su lab

Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.

Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.

La cantidad de estrellas indica lo siguiente:

  • 1 estrella = Muy insatisfecho
  • 2 estrellas = Insatisfecho
  • 3 estrellas = Neutral
  • 4 estrellas = Satisfecho
  • 5 estrellas = Muy satisfecho

Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.

Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.

Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.