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

  1. 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.
  2. 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.
  3. 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.

Arquitectura de Cloud Pub/Sub

Configuración Inicial

Paso 1: Crear un Tema

  1. Accede a la consola de GCP.
  2. Navega a Pub/Sub en el menú de navegación.
  3. Haz clic en Crear tema.
  4. Ingresa un nombre para el tema y haz clic en Crear.

Paso 2: Crear una Suscripción

  1. En la consola de Pub/Sub, selecciona el tema que creaste.
  2. Haz clic en Crear suscripción.
  3. Ingresa un nombre para la suscripción.
  4. Selecciona el tipo de entrega (Pull o Push).
  5. 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

  1. Objetivo: Crear un tema y una suscripción, luego publicar y recibir mensajes.
  2. Pasos:
    • Crea un tema llamado test-topic.
    • Crea una suscripción llamada test-subscription para el tema test-topic.
    • Publica un mensaje "Hello, World!" en test-topic.
    • Configura un suscriptor para recibir mensajes de test-subscription.

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

  1. Permisos Insuficientes: Asegúrate de que tu cuenta de servicio tenga los permisos necesarios para publicar y suscribirse a mensajes.
  2. Configuración Incorrecta del Cliente: Verifica que el ID del proyecto y los nombres de los temas y suscripciones sean correctos.
  3. 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.

© Copyright 2024. Todos los derechos reservados