Prácticas recomendadas para suscribirse a un tema de Pub/Sub

Durante la suscripción, un cliente suscriptor recibe mensajes de un tema de Pub/Sub. Estas son algunas prácticas recomendadas para suscribirte a Pub/Sub.

En este documento, se supone que ya estás familiarizado con el proceso de suscripción a un tema de Pub/Sub y de recepción de mensajes en tu cliente suscriptor.

Si recién comienzas a usar Pub/Sub, consulta una de las guías de inicio rápido y aprende a ejecutar Pub/Sub mediante Console, gcloud CLI o las bibliotecas cliente.

Elige la suscripción adecuada

Pub/Sub ofrece suscripciones estándar, como suscripciones push y pull. Además de las suscripciones estándar, Pub/Sub también ofrece suscripciones de exportación que te permiten almacenar mensajes directamente en un recurso de Google Cloud, sin necesidad de usar Dataflow como intermediario. Por ejemplo, las suscripciones a BigQuery almacenan mensajes en una tabla de BigQuery.

Las suscripciones de envío se recomiendan para las siguientes situaciones:

  • No puedes incluir código en tu aplicación suscriptora que importe la biblioteca cliente como una dependencia.

  • El cliente suscriptor no puede realizar solicitudes salientes.

  • Deseas usar la misma instancia para procesar mensajes de diferentes temas y suscripciones en los que el cliente suscriptor no conoce la lista de suscripciones.

Para casos generales, recomendamos usar la biblioteca cliente de alto nivel. En cambio, si usas una extracción unaria, no configures returnImmediately como true. Configurarlo como true tiene un impacto negativo en el rendimiento de la extracción. El campo returnImmediately dejó de estar disponible.

Procesa mensajes antes de confirmarlos

Según la configuración predeterminada, Pub/Sub descarta un mensaje de una suscripción después de que se confirma el mensaje. Si no procesas un mensaje antes de enviar una confirmación de recepción y el procesamiento falla, el servicio no vuelve a entregar el mensaje. La excepción ocurre cuando configuras la retención de mensajes confirmados o la retención de temas y realizas una operación de búsqueda.

Si tienes suscriptores de latencia alta, es posible que debas establecer valores personalizados para el control de flujo y la administración de asignaciones.

Configura el control de flujo de suscriptores para aumentos repentinos de tráfico transitorios

El control de flujo del lado del suscriptor te permite evitar que los suscriptores se sobrecarguen por aumentos repentinos de tráfico. Puede permitir que los mecanismos de ajuste de escala automático respondan a una carga aumentada o extienda el procesamiento de la carga durante un período más largo. El primer método ahorra latencia, mientras que el último ahorra costos.

Para configurar el control de flujo, debes establecer valores apropiados para maximum outstanding messages y total outstanding message bytes. Los valores predeterminados para estas variables de control de flujo y los nombres de las variables pueden diferir entre las bibliotecas cliente.

  • Cantidad máxima de mensajes pendientes: Define la cantidad máxima de mensajes entregados al cliente para los que Pub/Sub no recibió confirmaciones ni confirmaciones negativas.

  • Total de bytes de mensajes pendientes define el tamaño total máximo de los mensajes entregados al cliente para los que Pub/Sub no recibió confirmaciones ni confirmaciones negativas.

Si se supera el límite de una de estas opciones, el cliente suscriptor no extrae más mensajes. Este comportamiento continúa hasta que los mensajes que ya se extrajeron se reconocen o reconocen de forma negativa. De esta manera, puedes sacrificar la capacidad de procesamiento con el costo asociado con ejecutar más suscriptores.

Prácticas recomendadas para los mensajes ordenados durante la suscripción

Si usas el ordenamiento de los mensajes, asegúrate de que se cumpla lo siguiente:

  • Elige las suscripciones de StreamingPull o Pull. En el caso de una suscripción de envío, Pub/Sub solo admite un mensaje pendiente para cada clave de pedido a la vez. Enviar solicitudes de envío paralelas en esa situación sería similar a enviar varios lotes de mensajes para la misma clave de ordenamiento a fin de extraer suscriptores de forma simultánea. Por lo tanto, no se recomiendan las suscripciones push para temas en los que varios mensajes se publican con frecuencia con la misma clave de ordenamiento o en los que la latencia es sumamente importante.

  • Habilita el ordenamiento de los mensajes en la suscripción. En el lado del publicador, si envías mensajes con una clave de ordenamiento y en la misma región, puedes configurar los suscriptores para que reciban esos mensajes en orden. En el lado del suscriptor, habilita la propiedad de ordenamiento de mensajes solo para aquellas suscripciones en las que deseas recibir mensajes ordenados. Según el estado de la propiedad, cada suscripción adjunta al tema puede determinar si necesita una entrega ordenada sin afectarse entre sí.

  • Confirma los mensajes en orden. Cuando se usa la entrega ordenada, las confirmaciones de los mensajes posteriores no se procesan hasta que las confirmaciones de los mensajes anteriores se procesan por clave de ordenamiento. Por ejemplo, si tienes los mensajes 1, 2 y 3 con la misma clave de ordenamiento, y los recibes a todos y solo confirmas el mensaje 3, el servicio no considera al mensaje 3 como confirmado hasta que los mensajes 1 y 2 también se confirmen. Si nunca se reciben las confirmaciones de los mensajes 1 y 2, entonces los mensajes 1, 2 y 3 se vuelven a entregar.

Resumen de prácticas recomendadas

En la siguiente tabla, se resumen las prácticas recomendadas en este documento:

Tema Tarea
Elige un tipo de suscripción Elige el tipo de suscripción adecuado según las necesidades de tu empresa. Si tu suscripción lo admite, también usa la biblioteca cliente de alto nivel.
Cómo volver a reproducir un mensaje confirmado Procesa un mensaje antes de confirmarlo. También puedes configurar una operación de búsqueda para no perder los mensajes confirmados.
Control de flujo Establece el control de flujo en la configuración del suscriptor para garantizar que los suscriptores no se sobrecarguen hasta que se active el ajuste de escala automático o hasta que pase el tiempo.
Ordena mensajes Cuando uses mensajes ordenados, elige StreamingPull o Pull, habilita el ordenamiento de los mensajes en la suscripción y confirma la recepción de los mensajes en orden.

¿Qué sigue?