Quando uma mensagem é entregue a um assinante de pull, o assinante precisa processar e confirmar (confirmar) a mensagem dentro do prazo de confirmação. Caso contrário, o assinante precisará estender o prazo com uma chamada para modificar o prazo de confirmação.
As bibliotecas de cliente de alto nível do Pub/Sub oferecem gerenciamento de lease como um recurso que estende automaticamente o prazo de uma mensagem que ainda não foi confirmada. Por padrão, as bibliotecas de cliente podem estender o prazo para uma hora emitindo solicitações modifyAckDeadline periódicas.As bibliotecas de cliente de alto nível para Python, Go, Java e .Net usam o 99o percentil do atraso de confirmação para determinar a duração de cada extensão.
O gerenciamento de lease permite que você tenha um controle mais granular sobre o prazo de confirmação de mensagens em comparação com a configuração da propriedade no nível da assinatura. Se você estiver usando apenas o prazo de confirmação no nível da assinatura, precisará equilíbrio entre um valor baixo e um alto. Um valor baixo aumenta a probabilidade de cópias, e um valor alto atrasa o reenvio de mensagens com falha. Determinar o valor correto pode ser difícil, especialmente quando o tempo de processamento esperado para diferentes mensagens varia muito.
Para saber mais sobre as propriedades de uma assinatura, incluindo um prazo de confirmação, consulte Propriedades de assinatura.
Configuração de gerenciamento de lease
É possível configurar as seguintes propriedades nas bibliotecas de cliente de alto nível para controlar o gerenciamento de alocação.
Período máximo de extensão de confirmação. O prazo máximo para prolongar o prazo de confirmação de uma mensagem usando a solicitação
modify acknowledgment deadline
. Essa propriedade permite determinar por quanto tempo os clientes assinantes devem processar as mensagens.Duração máxima para cada extensão de confirmação. A quantidade máxima de tempo para estender o prazo de confirmação de cada uma das solicitações
modify acknowledgment deadline
. Essa propriedade permite definir o tempo que o Pub/Sub leva para reenviar uma mensagem. O reenvio ocorre quando o primeiro assinante que processa a mensagem falha ou se torna não íntegro e não pode mais enviar a solicitaçãomodify acknowledgment deadline
.Duração mínima de cada extensão de confirmação. A quantidade mínima de tempo para estender o prazo de confirmação de cada uma das solicitações
modify acknowledgment deadline
. Essa propriedade permite especificar o tempo mínimo necessário para que uma mensagem seja reenviada.
Não há garantia de que os prazos de confirmação serão cumpridos, a menos que você ative a entrega única.
Como gerenciar manualmente prazos de confirmação
Para evitar a expiração e o reenvio de mensagens ao usar pull unário ou bibliotecas de cliente de baixo nível, use a solicitação modify acknowledgment deadline
para estender os prazos de confirmação. As exceções são as bibliotecas de cliente de alto nível em Go e C++ que fornecem gerenciamento de alocação ao usar pull unário. Confira os seguintes exemplos de pull unário com gerenciamento de locação:
C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Java.
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Node.js.
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Python.
Ruby
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
A seguir
Leia sobre as outras opções de entrega que podem ser configuradas para uma assinatura:
Lidar com falhas de mensagens com a política de nova tentativa de assinatura
Encaminhar mensagens não entregues para um tópico de mensagens inativas