Descripción general de la suscripción

Para recibir mensajes publicados en un tema, debes crear una suscripción a ese tema. Los clientes suscriptores solo pueden ver los mensajes publicados 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 vinculada a un tema retroceda en el tiempo y repita los mensajes publicados anteriormente. Puedes obtener más información sobre la función en el tema Vuelve a reproducir y borra definitivamente los mensajes.

Flujo de trabajo de las suscripciones

  1. Después de que se envía un mensaje a un suscriptor, este debe confirmarlo.

  2. Si se envía un mensaje para su entrega y un suscriptor aún debe confirmarlo, el mensaje se denomina pendiente.

  3. Pub/Sub intenta entregar repetidamente cualquier mensaje que aún no se haya confirmado. Sin embargo, Pub/Sub intenta no entregar un mensaje pendiente a ningún otro suscriptor de la misma suscripción.

  4. El suscriptor tiene una cantidad de tiempo limitada y configurable, conocida como ackDeadline, para confirmar el mensaje pendiente. Después de que se cumple 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 desde el servidor de Pub/Sub.

  • Las suscripciones de envío usan el servidor de Pub/Sub para iniciar solicitudes a tu aplicación de suscriptor a fin de entregar mensajes.

  • Exportar suscripciones te ayuda 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 de Cloud Storage exportan datos a un bucket de Cloud Storage.

Para seleccionar la suscripción correcta según los requisitos de tu empresa, consulta Cómo elegir 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 entregas al menos una vez sin garantías de pedidos 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 el orden de 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 los recibe.

Pub/Sub también admite la entrega “exactamente una vez”.

En general, Pub/Sub entrega cada mensaje una vez y en el orden en que se publicó. Sin embargo, a veces los mensajes se pueden entregar desordenados o más de una vez. Es posible que Pub/Sub vuelva a entregar un mensaje incluso después de que una solicitud de confirmación del mensaje se muestre de forma correcta. Este reintento de publicación 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 enviar en cualquier momento.

Admitir la entrega más de una vez requiere que el suscriptor sea idempotente cuando procese 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. Algunos ejemplos de actividades de los suscriptores son las conexiones abiertas, las extracciones activas o las inserciones exitosas. Si Pub/Sub detecta actividad del suscriptor o una actualización de las propiedades de suscripción, se reiniciará el reloj de eliminación de suscripciones. Con las políticas de vencimiento de la suscripción, puedes configurar la duración de la inactividad o hacer que la suscripción sea persistente sin importar la actividad. También puedes borrar una suscripción de forma manual.

Si bien puedes crear una suscripción nueva con el mismo nombre que una borrada, la suscripción nueva no tiene relación con la anterior. Incluso si la suscripción borrada tuviera muchos mensajes no confirmados, la suscripción nueva creada con el mismo nombre no tendrá tareas pendientes (no habrá mensajes esperando la entrega) en el momento en que se crea.

¿Qué sigue?