Quando uma mensagem é entregue a um subscritor de obtenção, o subscritor tem de processar e acusar a receção (ack) da mensagem dentro do prazo de acusação de receção. Caso contrário, o subscritor tem de prolongar o prazo com uma chamada para modificar o prazo de confirmação.
As bibliotecas de cliente de alto nível do Pub/Sub oferecem a gestão de concessões como uma funcionalidade que prolonga automaticamente o prazo de uma mensagem que ainda não foi confirmada. Por predefinição, as bibliotecas cliente podem prolongar o prazo até uma hora emitindo pedidos modifyAckDeadline periódicos.As bibliotecas cliente de alto nível para Python, Go e Java usam o percentil 99 do atraso de confirmação para determinar a duração de cada extensão.
A gestão de concessões permite-lhe ter um controlo mais detalhado sobre o prazo de confirmação das mensagens em comparação com a configuração da propriedade ao nível da subscrição. Se estiver a usar apenas o prazo de confirmação ao nível da subscrição, tem de equilibrar a compensação entre um valor baixo e um valor alto. Um valor baixo aumenta a probabilidade de duplicados e um valor elevado atrasa o reenvio de mensagens com falhas. Determinar o valor certo pode ser difícil, especialmente quando o tempo de processamento esperado para diferentes mensagens varia muito.
Para mais informações sobre as propriedades de uma subscrição, incluindo o prazo de confirmação, consulte o artigo Propriedades da subscrição.
Configuração da gestão de arrendamentos
Pode configurar as seguintes propriedades nas bibliotecas de cliente de nível superior para controlar a gestão de concessões.
Período máximo de extensão da confirmação. O tempo máximo durante o qual a biblioteca de cliente pode prolongar o prazo de confirmação de uma mensagem através do pedido
modify acknowledgment deadline
. Esta propriedade permite-lhe determinar durante quanto tempo quer que os clientes subscritores processem mensagens.Duração máxima de cada extensão de reconhecimento. O período máximo de tempo para o qual a data limite de confirmação deve ser prolongada para cada um dos
modify acknowledgment deadline
pedidos. Esta propriedade permite-lhe definir o período de tempo que o Pub/Sub demora a reenviar uma mensagem. A reentrega ocorre quando o processamento da primeira subscrição da mensagem falha ou fica em mau estado e já não consegue enviar o pedidomodify acknowledgment deadline
.Duração mínima para cada extensão de reconhecimento. O período mínimo de tempo para prolongar o prazo de confirmação para cada um dos
modify acknowledgment deadline
pedidos. Esta propriedade permite-lhe especificar o valor mínimo de tempo que tem de decorrer antes de ocorrer a reentrega de uma mensagem.
Não é garantido que os prazos de confirmação sejam respeitados, a menos que ative a entrega exatamente uma vez.
Gerir manualmente os prazos de confirmação
Para evitar a expiração e a reentrega de mensagens quando usar a obtenção unária ou as bibliotecas de cliente de baixo nível, use o pedido modify acknowledgment deadline
para prolongar os respetivos prazos de confirmação. As exceções são as bibliotecas de cliente de alto nível Go e C++, que oferecem gestão de concessões quando usam a obtenção
unária. Veja os seguintes exemplos de obtenção unária com gestão de concessões:
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
Java
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
Python
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Ruby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
O que se segue?
Leia acerca das outras opções de fornecimento que pode configurar para uma subscrição:
Faça a gestão de falhas de mensagens com a política de repetição de subscrições
Encaminhe mensagens não entregues para um tópico de mensagens não entregues
Repita mensagens com confirmação anterior ou elimine mensagens