Introducción
Cloud Pub/Sub es un servicio de mensajería en tiempo real de Google Cloud Platform que permite la comunicación entre aplicaciones mediante el intercambio de mensajes de manera asíncrona. Es ideal para sistemas distribuidos y microservicios, donde la comunicación eficiente y escalable es crucial.
Conceptos Clave
-
Publicadores y Suscriptores:
- Publicador: Una aplicación que envía mensajes a un tema.
- Suscriptor: Una aplicación que recibe mensajes de una suscripción.
-
Temas y Suscripciones:
- Tema: Un canal de comunicación al que los publicadores envían mensajes.
- Suscripción: Una configuración que permite a los suscriptores recibir mensajes de un tema.
-
Mensajes:
- Mensaje: La unidad de datos que se envía desde el publicador al suscriptor. Contiene un payload y atributos opcionales.
Arquitectura de Cloud Pub/Sub
La arquitectura de Cloud Pub/Sub se basa en un modelo de publicación-suscripción, donde los mensajes se envían a temas y se entregan a suscriptores a través de suscripciones.
Configuración Inicial
Paso 1: Crear un Tema
- Accede a la consola de GCP.
- Navega a Pub/Sub en el menú de navegación.
- Haz clic en Crear tema.
- Ingresa un nombre para el tema y haz clic en Crear.
Paso 2: Crear una Suscripción
- En la consola de Pub/Sub, selecciona el tema que creaste.
- Haz clic en Crear suscripción.
- Ingresa un nombre para la suscripción.
- Selecciona el tipo de entrega (Pull o Push).
- Haz clic en Crear.
Ejemplo Práctico
Publicar un Mensaje
from google.cloud import pubsub_v1 # Configura el cliente de Pub/Sub publisher = pubsub_v1.PublisherClient() topic_path = publisher.topic_path('your-project-id', 'your-topic-name') # Mensaje a publicar message = "Hello, Pub/Sub!" # Publica el mensaje future = publisher.publish(topic_path, message.encode('utf-8')) print(f'Message ID: {future.result()}')
Suscribirse y Recibir Mensajes
from google.cloud import pubsub_v1 # Configura el cliente de Pub/Sub subscriber = pubsub_v1.SubscriberClient() subscription_path = subscriber.subscription_path('your-project-id', 'your-subscription-name') def callback(message): print(f'Received message: {message.data}') message.ack() # Escucha los mensajes streaming_pull_future = subscriber.subscribe(subscription_path, callback=callback) print(f'Listening for messages on {subscription_path}') try: streaming_pull_future.result() except KeyboardInterrupt: streaming_pull_future.cancel()
Ejercicio Práctico
Ejercicio 1: Publicar y Suscribirse a Mensajes
- Objetivo: Crear un tema y una suscripción, luego publicar y recibir mensajes.
- Pasos:
- Crea un tema llamado
test-topic
. - Crea una suscripción llamada
test-subscription
para el tematest-topic
. - Publica un mensaje "Hello, World!" en
test-topic
. - Configura un suscriptor para recibir mensajes de
test-subscription
.
- Crea un tema llamado
Solución
# Publicar un mensaje from google.cloud import pubsub_v1 publisher = pubsub_v1.PublisherClient() topic_path = publisher.topic_path('your-project-id', 'test-topic') message = "Hello, World!" future = publisher.publish(topic_path, message.encode('utf-8')) print(f'Message ID: {future.result()}') # Suscribirse y recibir mensajes from google.cloud import pubsub_v1 subscriber = pubsub_v1.SubscriberClient() subscription_path = subscriber.subscription_path('your-project-id', 'test-subscription') def callback(message): print(f'Received message: {message.data}') message.ack() streaming_pull_future = subscriber.subscribe(subscription_path, callback=callback) print(f'Listening for messages on {subscription_path}') try: streaming_pull_future.result() except KeyboardInterrupt: streaming_pull_future.cancel()
Errores Comunes y Consejos
- Permisos Insuficientes: Asegúrate de que tu cuenta de servicio tenga los permisos necesarios para publicar y suscribirse a mensajes.
- Configuración Incorrecta del Cliente: Verifica que el ID del proyecto y los nombres de los temas y suscripciones sean correctos.
- Manejo de Errores: Implementa manejo de errores para situaciones como mensajes no reconocidos o problemas de red.
Conclusión
En esta sección, aprendiste los conceptos básicos de Cloud Pub/Sub, cómo configurar temas y suscripciones, y cómo publicar y recibir mensajes. Estos conocimientos son fundamentales para construir sistemas distribuidos y microservicios eficientes en Google Cloud Platform. En el próximo módulo, exploraremos otros servicios de datos y análisis en GCP.
Curso de Google Cloud Platform (GCP)
Módulo 1: Introducción a Google Cloud Platform
- ¿Qué es Google Cloud Platform?
- Configuración de tu cuenta de GCP
- Descripción general de la consola de GCP
- Comprensión de proyectos y facturación
Módulo 2: Servicios principales de GCP
Módulo 3: Redes y seguridad
Módulo 4: Datos y análisis
Módulo 5: Aprendizaje automático e IA
Módulo 6: DevOps y monitoreo
- Cloud Build
- Repositorios de código en la nube
- Cloud Functions
- Monitoreo de Stackdriver
- Cloud Deployment Manager
Módulo 7: Temas avanzados de GCP
- Híbrido y multi-nube con Anthos
- Computación sin servidor con Cloud Run
- Redes avanzadas
- Mejores prácticas de seguridad
- Gestión y optimización de costos