Pub/Sub es un servicio de publicación/suscripción (Pub/Sub), un servicio de mensajería en el que los remitentes de los mensajes están desacoplados de los destinatarios. En un servicio de Pub/Sub hay varios conceptos clave que se explican con la ayuda de la siguiente figura.
Estos son los componentes de un servicio de Pub/Sub:
Editor (también llamado productor): crea mensajes y los envía (publica) al servicio de mensajería en un tema específico.
Mensaje: los datos que se mueven a través del servicio.
Tema: una entidad con nombre que representa un feed de mensajes.
Esquema: entidad con nombre que rige el formato de datos de un mensaje de Pub/Sub.
Suscripción: entidad con nombre que representa el interés en recibir mensajes sobre un tema concreto.
Suscriptor (también llamado consumidor): recibe mensajes en una suscripción específica.
En el siguiente procedimiento se describe el flujo de trabajo del servicio Pub/Sub:
Dos aplicaciones de editores, Editor 1 y Editor 2, envían mensajes a un único tema de Pub/Sub. Editor 1 envía el mensaje A y Editor 2 envía el mensaje B.
El tema está vinculado a dos suscripciones. Estas son Suscripción 1 y Suscripción 2.
El tema también está asociado a un esquema.
Cada suscripción recibe una copia de los mensajes A y B del tema.
Suscripción 1 está conectada a dos aplicaciones de suscriptor: Suscriptor 1 y Suscriptor 2. Las dos aplicaciones de suscriptor reciben un subconjunto de los mensajes del tema. En este ejemplo, Suscriptor 1 recibe el mensaje B, mientras que Suscriptor 2 recibe el mensaje A del tema.
Suscripción 2 solo está conectada a una aplicación de suscriptor llamada Suscriptor 3. Por lo tanto, Suscriptor 3 recibe todos los mensajes del tema.
Tiempo de vida de un mensaje
Supongamos que un solo cliente editor está conectado a un tema. El tema tiene una sola suscripción asociada. Un solo suscriptor está conectado a la suscripción.
En los siguientes pasos se describe cómo fluye un mensaje en Pub/Sub:
Una aplicación de editor envía un mensaje a un tema de Pub/Sub.
El mensaje se escribe en el almacenamiento.
Además de escribir el mensaje en el almacenamiento, Pub/Sub lo envía a todas las suscripciones asociadas al tema.
En este ejemplo, se trata de una sola suscripción.
La suscripción envía el mensaje a una aplicación de suscriptor adjunta.
El suscriptor envía una confirmación a Pub/Sub para indicar que ha procesado el mensaje.
Una vez que al menos un suscriptor de cada suscripción haya confirmado la recepción del mensaje, Pub/Sub lo eliminará del almacenamiento.
Estado de un mensaje en Pub/Sub
Mientras un mensaje esté pendiente para un suscriptor, Pub/Sub no intentará entregarlo a ningún otro suscriptor de la misma suscripción. El suscriptor tiene un tiempo limitado y configurable, conocido como ackDeadline, para confirmar el mensaje pendiente. Una vez que haya pasado la fecha límite, el mensaje dejará de considerarse pendiente y estará disponible para enviarse de nuevo.