Quando uma mensagem é entregue a um assinante de pull, ele precisa processar e confirmar (ack) a mensagem dentro do prazo de confirmação. Caso contrário, o assinante precisa 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 o gerenciamento de leasing 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 99º percentil do atraso de confirmação para determinar a duração de cada extensão.
O gerenciamento de cessão de direito real 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, é necessário equilibrar o valor baixo e o alto. Um valor baixo aumenta a probabilidade de duplicações, e um valor alto atrasa a reenvio de mensagens com falha. Determinar o valor certo pode ser difícil, especialmente quando o tempo de processamento esperado para mensagens diferentes varia muito.
Para mais informações sobre as propriedades de uma assinatura, incluindo o prazo de confirmação, consulte Propriedades de assinatura.
Configuração do gerenciamento de locação
É possível configurar as propriedades a seguir nas bibliotecas de cliente de alto nível para controlar o gerenciamento de contratos.
Período máximo de extensão do aviso. O tempo máximo que você pode estender 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 vão processar mensagens.Duração máxima de cada extensão de confirmação. O tempo máximo 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. A reentrega ocorre quando o primeiro assinante que processa a mensagem falha ou fica inativo e não consegue mais enviar a solicitaçãomodify acknowledgment deadline
.Duração mínima de cada extensão de confirmação. O tempo mínimo para estender o prazo de confirmação de cada uma das solicitações
modify acknowledgment deadline
. Essa propriedade permite especificar o tempo mínimo que precisa passar antes que a reentrega de uma mensagem ocorra.
Não há garantia de que os prazos de confirmação serão respeitados, a menos que você ative a entrega exatamente uma vez.
Gerenciar manualmente os prazos de confirmação
Para evitar a expiração e a reentrega de mensagens ao usar o pull unário ou as
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 do Go e do C++,
que fornecem gerenciamento de lease ao usar a extração unária. Confira os seguintes exemplos de pull unário com gerenciamento de concessã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 exibição que podem ser configuradas para uma assinatura:
Lidar com falhas de mensagens com a política de repetição de assinatura
Encaminhar mensagens não entregues para um tópico de mensagens inativas
Reproduzir mensagens confirmadas anteriormente ou limpar mensagens