Cuando se entrega un mensaje a un suscriptor de extracción, este debe procesarlo y confirmarlo (ack) dentro del plazo de confirmación. De lo contrario, el suscriptor debe extender el plazo con una llamada para modificar el plazo de confirmación.
Las bibliotecas cliente de alto nivel de Pub/Sub proporcionan la administración de concesiones como una función que extiende automáticamente el plazo de un mensaje que aún no se confirmó. De forma predeterminada, las bibliotecas cliente pueden extender el plazo a una hora mediante la emisión de solicitudes periódicas modifyAckDeadline.Las bibliotecas cliente de alto nivel para Python, Go y Java usan el percentil 99 del retraso de confirmación para determinar la duración de cada extensión.
La administración de concesiones te permite tener un control más detallado sobre el plazo de confirmación de recepción de los mensajes en comparación con la configuración de la propiedad a nivel de la suscripción. Si solo usas el plazo de confirmación a nivel de la suscripción, debes equilibrar la compensación entre un valor bajo y un valor alto. Un valor bajo aumenta la probabilidad de duplicados y un valor alto retrasa la nueva entrega de mensajes fallidos. Determinar el valor correcto puede ser difícil, en especial cuando el tiempo de procesamiento esperado para diferentes mensajes varía mucho.
Para obtener más información sobre las propiedades de una suscripción, incluido el plazo de confirmación, consulta Propiedades de la suscripción.
Configuración de la administración de concesiones
Puedes configurar las siguientes propiedades en las bibliotecas cliente de alto nivel para controlar la administración de concesiones.
Período máximo de extensión de confirmación. Es la cantidad máxima de tiempo durante la cual la biblioteca cliente puede extender el plazo de confirmación de un mensaje mediante la solicitud
modify acknowledgment deadline. Esta propiedad te permite determinar cuánto tiempo deseas que los clientes suscriptores procesen los mensajes.Duración máxima de cada extensión de confirmación. Es la cantidad máxima de tiempo en la que se debe extender el plazo de confirmación para cada una de las solicitudes
modify acknowledgment deadline. Esta propiedad te permite definir la cantidad de tiempo que Pub/Sub tarda en volver a entregar un mensaje. La nueva entrega se produce cuando el primer suscriptor que procesa el mensaje falla o deja de estar en buen estado y ya no puede enviar la solicitudmodify acknowledgment deadline.Duración mínima de cada extensión de confirmación. Es la cantidad mínima de tiempo en la que se debe extender el plazo de confirmación para cada una de las solicitudes
modify acknowledgment deadline. Esta propiedad te permite especificar la cantidad mínima de tiempo que debe transcurrir antes de que se vuelva a entregar un mensaje.
No se garantiza que se respeten los plazos de confirmación, a menos que habilites la entrega “exactamente una vez”.
Administra los plazos de confirmación de forma manual
Te recomendamos que uses las bibliotecas cliente de alto nivel. Si no funcionan o necesitas usar la extracción unaria, usa la solicitud modify acknowledgment deadline para extender sus plazos de confirmación.
La biblioteca cliente de alto nivel de C++ es una excepción que proporciona la administración de concesiones cuando se usa la extracción unaria. Consulta las siguientes muestras para la extracción unaria con la administración de concesiones:
C#
Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para C#.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Java .
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Node.js.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub .
Ruby
En el siguiente ejemplo, se usa la biblioteca cliente de Pub/Sub de Ruby v3. Si aún usas la biblioteca v2, consulta la guía de migración a la v3. Para ver una lista de muestras de código de Ruby v2, consulta las muestras de código obsoletas.
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Ruby.
¿Qué sigue?
Obtén información sobre las otras opciones de entrega que puedes configurar para una suscripción:
Controla los aumentos repentinos transitorios con el control de flujo
Controla los errores en los mensajes con la política de reintento de suscripción
Reenvía los mensajes no entregados a un tema de mensajes no entregados
Vuelve a reproducir mensajes ya confirmados o borra mensajes