Descripción general de la suscripción

Para recibir mensajes publicados en un tema, debes crear una suscripción a ese en este tema. Solo los mensajes publicados en el tema después de crear la suscripción están disponibles para los clientes suscriptores. 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

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

  2. Si se envía un mensaje para su entrega y un suscriptor aún no lo confirma, se considera pendiente.

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

  4. El suscriptor tiene una cantidad de tiempo configurable y limitada, conocida como ackDeadline, para confirmar 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 solicitarle mensajes. el servidor de Pub/Sub.

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

  • La exportación de 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 un en la tabla de BigQuery.

    • Las suscripciones a Cloud Storage exportan datos a un bucket de Cloud Storage.

Para elegir la suscripción correcta según 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 predeterminadas de la suscripción

De forma predeterminada, Pub/Sub ofrece entregas "al menos una vez", que garantiza el pedido de garantías en todos los tipos de suscripción. Por otro lado, si los mensajes tienen la misma clave de ordenamiento y están en la misma región, puedes habilitar la opción Message en línea. 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 del tipo “exactamente una vez”.

En general, Pub/Sub entrega cada mensaje una vez y en el orden en la que se publicó. Sin embargo, a veces los mensajes se entregan o más de una vez. Es posible que Pub/Sub vuelva a entregar un mensaje después de que se devuelve correctamente una solicitud de confirmación del mensaje. Esta el reintento de la publicación puede deberse a problemas como reinicios del servidor o problemas. 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 luego de 31 días de inactividad del suscriptor o si no se realizan actualizaciones en la suscripción. Ejemplos de actividades de los suscriptores incluyen conexiones abiertas, extracciones activas o envíos exitosos. Si Pub/Sub detecta la actividad del suscriptor o una actualización del de suscripción, el reloj de eliminación de la suscripción se reinicia. Usando políticas de vencimiento de suscripciones, puedes configurar la duración de la inactividad o hacer que la suscripción sea persistente independientemente de la actividad. También puedes borrar una suscripción de forma manual

Aunque puedes crear una suscripción nueva con el mismo nombre de una que se borró, la 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?