En este documento, se supone que ya conoces el proceso para suscribirte a un tema de Pub/Sub y recibir mensajes en tu cliente suscriptor.
Si es la primera vez que usas Pub/Sub, consulta una de las guías de inicio rápido y aprende a ejecutar Pub/Sub con la consola, la CLI de gcloud o las bibliotecas cliente.
Elige la suscripción correcta
Pub/Sub ofrece suscripciones estándar, como las 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 Dataflow como intermediario. Por ejemplo, las suscripciones a BigQuery almacenan mensajes en una tabla de BigQuery.
Se recomiendan las suscripciones push para las siguientes situaciones:
No puedes incluir ningún código en tu aplicación de suscriptor que importe la biblioteca cliente como una dependencia.
El cliente suscriptor no puede realizar ninguna solicitud saliente.
Quieres usar la misma instancia para procesar mensajes de diferentes temas y suscripciones en los que el cliente suscriptor no conoce la lista de suscripciones.
En los casos generales, te recomendamos que uses la biblioteca cliente de alto nivel. Si, en su lugar, usas extracción unaria, no configures returnImmediately
en true
. Si se establece en true
, el rendimiento de la extracción se verá afectado de forma negativa.
El campo returnImmediately
dejó de estar disponible.
Para comparar todos los tipos de suscripción y elegir el que mejor se adapte a las necesidades de tu negocio, consulta la tabla de comparación de suscripciones de Pub/Sub.
Para obtener información sobre los beneficios de una suscripción a exportaciones, consulta Cuándo usar una suscripción a exportaciones.
Procesa los mensajes antes de confirmarlos
De forma predeterminada, Pub/Sub descarta un mensaje de una suscripción después de que se confirma. Si no procesas un mensaje antes de enviar un mensaje de confirmación y el procesamiento falla, el servicio no vuelve a entregar el mensaje. La excepción es cuando configuraste la retención de mensajes confirmados o la retención de temas y realizas una operación de búsqueda.
Si tienes suscriptores de alta latencia, 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 los aumentos transitorios de tráfico
El control de flujo del suscriptor te permite evitar que los suscriptores se sobrecarguen debido a los picos de tráfico. Puede permitir que los mecanismos de ajuste de escala automático respondan a una carga mayor o puede distribuir el procesamiento de la carga en un período más largo. El primer método ahorra latencia, mientras que el segundo ahorra costos.
Para configurar el control de flujo, debes establecer los valores adecuados para maximum outstanding messages
y total outstanding message bytes
. Los valores predeterminados de estas variables de control de flujo y los nombres de las variables pueden diferir entre las bibliotecas cliente.
Mensajes pendientes máximos define la cantidad máxima de mensajes que se entregan 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 recupera más mensajes. Este comportamiento continúa hasta que se confirman o se rechazan los mensajes que ya se extrajeron. De esta manera, puedes compensar el rendimiento con el costo asociado a la ejecución de más suscriptores.
Prácticas recomendadas para los mensajes ordenados en la suscripción
Si usas el orden de los mensajes, asegúrate de lo siguiente:
Elige 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 ordenamiento a la vez. Enviar solicitudes de envío en paralelo en una situación de este tipo sería similar a enviar varios lotes de mensajes para la misma clave de ordenamiento para extraer suscriptores de forma simultánea. Por lo tanto, no se recomiendan las suscripciones push para temas en los que se publican varios mensajes con frecuencia con la misma clave de ordenamiento o en los que la latencia es extremadamente importante.
Habilita el ordenamiento de 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 a 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 para las que deseas recibir mensajes ordenados. Según el estado de la propiedad, cada suscripción adjunta al tema puede determinar si necesita una publicación ordenada sin afectarse entre sí.
Confirma la recepción de los mensajes en orden. Cuando se usa la entrega ordenada, los acuses de recibo de los mensajes posteriores no se procesan hasta que se procesan los acuses de recibo de los mensajes anteriores por clave de orden. Por ejemplo, si tienes los mensajes 1, 2 y 3 con la misma clave de ordenamiento y los recibes todos, pero solo confirmas el mensaje 3, el servicio no considera que el mensaje 3 se confirmó hasta que también se confirmen los mensajes 1 y 2. Si nunca se reciben las confirmaciones de los mensajes 1 y 2, se vuelven a entregar los mensajes 1, 2 y 3.
Resumen de prácticas recomendadas
En la siguiente tabla, se resumen las prácticas recomendadas de este documento:
Tema | Tarea |
---|---|
Elige un tipo de suscripción | Elige el tipo de suscripción adecuado para las necesidades de tu empresa. Si tu suscripción la admite, también usa la biblioteca cliente de alto nivel. |
Cómo volver a reproducir un mensaje confirmado | Procesa un mensaje antes de confirmarlo. O bien, configura una operación de búsqueda para no perder los mensajes confirmados. |
Control de flujo | Configura el control de flujo en la configuración de los suscriptores para asegurarte de que no se produzcan sobrecargas hasta que se active el ajuste de escala automático o pase el tiempo. |
Ordena mensajes | Cuando uses mensajes ordenados, elige StreamingPull o Pull, habilita el ordenamiento de mensajes en la suscripción y confirma los mensajes en orden. |