Para recibir mensajes publicados en un tema, debes crear una suscripción a ese tema. Solo los mensajes publicados en el tema después de crear la suscripción están disponibles para los clientes suscriptor. 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 realice búsquedas en el tiempo y vuelva a reproducir mensajes publicados anteriormente. Puedes obtener más información sobre la función en el tema Cómo volver a reproducir y borrar definitivamente los 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 intentará 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 intentará 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 te ayudan a exportar tus mensajes directamente a un recurso de Google Cloud. Estas suscripciones incluyen lo siguiente:
Las suscripciones a BigQuery exportan datos a una tabla de BigQuery.
Las suscripciones a 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 de una suscripción en cualquier momento después de su creación.
Propiedades predeterminadas de la suscripción
De forma predeterminada, Pub/Sub ofrece una entrega al menos una vez sin garantías de orden en todos los tipos de suscripciones. Como alternativa, si los mensajes tienen la misma clave de ordenamiento y están en la misma región, puedes habilitar el ordenamiento de los mensajes. Una vez que configures 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, es posible que los mensajes se entreguen más de una vez o en otro orden. Pub/Sub puede volver a entregar un mensaje incluso después de que una solicitud de confirmación del mensaje se devuelve correctamente. Esta reenvío puede deberse a problemas como reinicios del servidor o del cliente. Por lo tanto, aunque es raro, 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 ellas. Algunos ejemplos de actividades del suscriptor son conexiones abiertas, extracciones activas o envíos exitosos. 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 suscripciones. 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ía ningún trabajo acumulado (no habría mensajes esperando la entrega) en el momento en que se cree.
¿Qué sigue?
Elige el tipo de suscripción correcto para tus requisitos comerciales.
Comprende el flujo de trabajo de cada tipo de suscripción:
Obtén información sobre las diferentes propiedades de suscripción.