Cuando se entrega un mensaje a un suscriptor de extracción, este debe procesarlo y confirmarlo (ack) antes de la fecha límite de confirmación. De lo contrario, el suscriptor debe ampliar el plazo con una llamada para modificar el plazo de confirmación.
Las bibliotecas de cliente de alto nivel de Pub/Sub ofrecen la gestión de arrendamientos como una función que amplía automáticamente el plazo de un mensaje que aún no se ha confirmado. De forma predeterminada, las bibliotecas de cliente pueden ampliar el plazo hasta una hora enviando solicitudes periódicas de modifyAckDeadline.Las bibliotecas de cliente de alto nivel de Python, Go y Java usan el percentil 99 del retraso de confirmación para determinar la duración de cada extensión.
La gestión de la concesión te permite tener un control más granular sobre la fecha límite de confirmación de los mensajes en comparación con la configuración de la propiedad a nivel de suscripción. Si solo usas el plazo de confirmación a nivel de suscripción, debes encontrar el equilibrio entre un valor bajo y un valor alto. Un valor bajo aumenta la probabilidad de que haya duplicados, mientras que un valor alto retrasa el reenvío de los mensajes fallidos. Determinar el valor adecuado puede ser difícil, sobre todo cuando el tiempo de procesamiento previsto para los distintos mensajes varía considerablemente.
Para obtener más información sobre las propiedades de una suscripción, incluido el plazo de confirmación, consulta Propiedades de las suscripciones.
Configuración de la gestión de arrendamientos
Puedes configurar las siguientes propiedades en las bibliotecas de cliente de alto nivel para controlar la gestión de las concesiones.
Periodo máximo de ampliación de la confirmación. Tiempo máximo durante el cual la biblioteca de cliente puede ampliar el plazo de confirmación de un mensaje mediante la solicitud
modify acknowledgment deadline
. Esta propiedad le permite determinar cuánto tiempo quiere que los clientes suscriptores procesen los mensajes.Duración máxima de cada extensión de confirmación. Tiempo máximo que se puede ampliar el plazo de confirmación de cada una de las
modify acknowledgment deadline
solicitudes. Esta propiedad te permite definir el tiempo que tarda Pub/Sub en volver a enviar un mensaje. La reentrega 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. El tiempo mínimo que se debe ampliar el plazo de confirmación de cada una de las
modify acknowledgment deadline
solicitudes. Esta propiedad le permite especificar la cantidad mínima de tiempo que debe transcurrir antes de que se vuelva a enviar un mensaje.
No se garantiza que se respeten los plazos de confirmación a menos que habilite la entrega exactamente una vez.
Gestionar manualmente los plazos de confirmación
Para evitar que los mensajes caduquen y se vuelvan a enviar cuando se usa la extracción unaria o las bibliotecas de cliente de bajo nivel, usa la solicitud modify acknowledgment deadline
para ampliar los plazos de confirmación. Las excepciones son las bibliotecas de cliente de alto nivel de Go y C++, que proporcionan gestión de concesiones al usar la extracción unaria. Consulta los siguientes ejemplos de extracción unaria con gestión de arrendamientos:
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para 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 de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Siguientes pasos
Consulta las otras opciones de entrega que puedes configurar para una suscripción:
Gestionar fallos de mensajes con la política de reintentos de suscripción
Reenviar mensajes no entregados a un tema de mensajes fallidos
Volver a reproducir mensajes confirmados anteriormente o eliminar mensajes definitivamente