En esta actividad aprenderemos a usar Pub/Sub, el sistema de publish subscribe de GCP. La idea es entender los conceptos relacionados a la comunicación de grandes volúmenes de datos de una manera práctica.
Creación de tópico
Por interfaz web busca en el menu del navegador Pub/Sub, que se encuentra con los otros servicios de Analytics, luego haz click en Temas (Topics).
Encontrarás el link para crear un tópico en la barra superior (+ CREAR TEMA).
Para crear el tópico debemos poner un ID del Tema, el nombre del tópico es único y se forma con este ID. Agregaremos subscripciones manualmente por lo que se puede desmarcar Agregar una subscripción predeterminada.
Por línea de comando, para crear un tópico abres la consola de Cloud Shell y usas el siguiente comando. Son muchos menos clicks que por la interfaz gráfica.
Subscripción a tópico Pull
Por interfaz, ingresas al tópico creado y en el tab SUSCRIPCIONES, seleccionas Crear suscripción.
Luego se debe poner un identifiicador a la suscripción, indicando que tipo de entrega se desea: Pull (Extraer) o Push (Enviar). En este caso será Pull (Extraer).
Por línea de comando sería:
Ojo que TOPIC_NAME es el nombre completo del tópico creado, no solo el identificador.
Envío de mensaje a tópico
Por interfaz, dentro del tópico (tema), nos vamos al tab MENSAJES:
Acá encontraremos en Publicar Mensaje es espacio para poner el contenido del mensaje. Presionar Publicar para enviar.
Por línea de comando:
Para acceder a estos mensajes desde las subscripciones se debe hacer "pull" (Extraer) del mensaje. Por línea de comando sería:
Por consola, incresa a las subcripciones dentro del tópico y presiona PULL, si habilitas "Enable ack messages" podrás emitir ACK para que los mensajes se den por entregados a la subscripción y no vuelvan a llegar.
Trigger Cloud Run Function
En general vamos a encontrar Pub/Sub integrado con otros servicios de GCP. Un caso muy típico es la integración con Cloud Run Functions, que realiza la función por cada mensaje que reciba el tópico en cuestión.
Para esto primero se debe habilitar Cloud Functions API, Eventarc API y Cloud Build API. Búscalas en la barra de búsqueda y haz click en el botón HABILITAR (Enable). Por ejemplo en Cloud Build:
Ahora, entra al tópico creador en Pub/Sub y presiona sobre + Trigger Cloud Run Function.
Habilita las API obligatorias si es que te faltan algunas y deja por defecto los aspectos básicos y el activador. En el código fuente elige el entorno de 1ra generación.
Vamos a dejar la función por defecto, pon un nombre a la función, puedes cambiar el Runtime a Python 3.12 para que el código te sea familiar, es simplemente un print del mensaje.
Luego presiona "DEPLOY FUNCTION".
Puedes enviar mensaje al tópico por Cloud Shell como ya sabes hacerlo y para revisar si esto gatilló la función, busca el servicio Cloud RUN en el menu de navegación. Luego ingresa a la función creada.
En el tab REGISTROS vas a encontrar si la función se gatilló y cuantos ms se demoró en ejecutar el código.
Puedes repetir este proceso para ver cambios en el tiempo de ejecución.
Para finalizar recuerda borrar los recursos creados.
Para cancelar la subscripción (Borra todas las creadas):
Para borrar el tópico:
Por interfaz también se puede hacer de manera intuitiva.