Para recibir mensajes publicados en un tema, debes crear una suscripción a ese tema. Los únicos mensajes que están disponibles para los clientes suscriptores son aquellos que se publicaron en el tema después de crear la suscripción. El cliente suscriptor recibe y procesa los mensajes publicados en el tema. Un tema puede tener varias suscripciones, pero una suscripción dada pertenece a un solo tema.
La función de retención de temas permite que una suscripción adjunta a un tema pueda volver en el tiempo para realizar búsquedas y volver a reproducir mensajes publicados anteriormente. Puedes obtener más información sobre la función en el tema Cómo volver a reproducir y purgar mensajes.
Flujo de trabajo de la suscripción
Después de que se envía un mensaje a un suscriptor, el suscriptor debe confirmar el mensaje.
Si se envía un mensaje para su entrega y un suscriptor aún no lo confirma, el mensaje se denomina pendiente.
Pub/Sub intenta entregar repetidas veces cualquier mensaje que aún no se haya confirmado. Sin embargo, Pub/Sub intenta no entregar un mensaje pendiente a ningún otro suscriptor con la misma suscripción.
El suscriptor tiene una cantidad de tiempo limitada y configurable (conocida como
ackDeadline) para reconocer el mensaje pendiente. Una vez transcurrido el plazo, el mensaje ya no se considera pendiente, y Pub/Sub intenta volver a entregarlo.
Tipos de suscripciones
Cuando creas una suscripción, debes especificar el tipo de entrega de mensajes. Pub/Sub ofrece los siguientes tipos de suscripciones:
Las suscripciones de extracción usan un cliente suscriptor para solicitar mensajes del servidor de Pub/Sub.
Las suscripciones de envío usan el servidor de Pub/Sub para iniciar solicitudes a tu aplicación de suscriptor para entregar mensajes.
Las suscripciones de exportación exportan tus mensajes directamente a un Google Cloud recurso. Estas suscripciones incluyen lo siguiente:
Las suscripciones de BigQuery exportan datos a una tabla de BigQuery.
Las suscripciones de Bigtable (vista previa) exportan datos a una tabla de Bigtable.
Las suscripciones de Cloud Storage exportan datos a un bucket de Cloud Storage.
Para elegir la suscripción correcta para los requisitos de tu empresa, consulta Elige un tipo de suscripción. Puedes actualizar el tipo de entrega de mensajes para una suscripción en cualquier momento después de su creación.
Propiedades de suscripción predeterminadas
De forma predeterminada, Pub/Sub ofrece una entrega al menos una vez sin garantías de ordenamiento en todos los tipos de suscripción. Como alternativa, si los mensajes tienen la misma clave de ordenamiento y están en la misma región, puedes habilitar la ordenación de los mensajes. Después de configurar la propiedad de ordenamiento de mensajes, el servicio de Pub/Sub entrega mensajes con la misma clave de ordenamiento y en el orden en que el servicio de Pub/Sub recibe los mensajes.
Pub/Sub también admite la entrega exactamente una vez.
En general, Pub/Sub entrega cada mensaje una sola vez y en el orden en que se publicó. Sin embargo, a veces, los mensajes se pueden entregar fuera de orden o más de una vez. Pub/Sub puede volver a entregar un mensaje incluso después de que una solicitud de confirmación de recepción del mensaje se muestre correctamente. Esta nueva entrega puede deberse a problemas como reinicios del servidor o problemas del cliente. Por lo tanto, aunque es poco frecuente, cualquier mensaje se puede volver a entregar en cualquier momento.
Para realizar entregas más de una vez, es necesario que el suscriptor sea idempotente cuando procesa los mensajes.
Vencimiento de la suscripción
De forma predeterminada, las suscripciones vencen después de 31 días de inactividad del suscriptor o si no se realizan actualizaciones en la suscripción. Algunos ejemplos de actividades del suscriptor incluyen conexiones abiertas, extracciones activas o inserciones exitosas. Si Pub/Sub detecta actividad del suscriptor o una actualización de las propiedades de la suscripción, se reinicia el reloj de eliminación de la suscripción. Con las políticas de vencimiento de la suscripción, puedes configurar el período de inactividad o hacer que la suscripción sea persistente sin importar la actividad. También puedes borrar una suscripción de forma manual.
Aunque puedes crear una suscripción nueva con el mismo nombre que una que se borró, la suscripción nueva no tiene relación con la anterior. Incluso si la suscripción que se borró tenía muchos mensajes no confirmados, una suscripción nueva creada con el mismo nombre no tendrá ningún trabajo acumulado (no habrá mensajes esperando la entrega) en el momento en que se cree.
¿Qué sigue?
Elige el tipo de suscripción correcto para los requisitos de tu empresa.
Comprende el flujo de trabajo de cada tipo de suscripción:
Obtén información sobre las diferentes propiedades de la suscripción.