Às vezes, Data pipelines têm picos no tráfego publicado. Os picos de tráfego pode sobrecarregar os inscritos, a menos que esteja preparado para isso. Uma solução simples evitar picos de tráfego é aumentar dinamicamente os recursos de assinantes do Pub/Sub para processar mais mensagens. No entanto, essa solução pode aumentar os custos ou não funcionam instantaneamente. Por exemplo, muitas VMs podem ser necessárias.
O controle de fluxo no lado do assinante permite que ele regule a taxa em quais mensagens são ingeridas. O controle de fluxo lida com picos de tráfego aumentando os custos ou até que o assinante seja escalonado verticalmente.
O controle de fluxo é um recurso disponível no Pub/Sub biblioteca de cliente de alto nível. Você também pode implementar sua própria programação de controle de fluxo quando estiver usando uma biblioteca de cliente de baixo nível.
A necessidade de controle de fluxo indica que as mensagens são publicadas com uma taxa maior do que são consumidas. Se esse cenário é um caso em vez de um pico temporário no volume de mensagens, considere aumentar o número de instâncias do cliente assinante.
Configuração do controle de fluxo
Com o controle de fluxo, é possível configurar o número máximo de bytes alocados solicitações pendentes e o número máximo de mensagens pendentes permitidas. Defina esses limites de acordo com a capacidade dos computadores clientes.
Os valores padrão das variáveis de controle de fluxo e os nomes variáveis podem diferir entre as bibliotecas de cliente. Por exemplo: na biblioteca de cliente Java, as variáveis a seguir configuram o controle de fluxo:
setMaxOutstandingElementCount(). Define o número máximo de mensagens para os quais o Pub/Sub não recebeu confirmações ou mensagens e agradecimentos.
setMaxOutstandingRequestBytes().. Define o tamanho máximo das mensagens para os quais o Pub/Sub não recebeu confirmações ou mensagens e agradecimentos.
Se o limite de setMaxOutstandingElementCount()
ou
setMaxOutstandingRequestBytes()
for cruzado, o cliente do assinante
não vai buscar mais mensagens. Esse comportamento continua até que as mensagens
que já foram extraídos recebem reconhecimento ou reconhecimento negativo.
Assim, podemos alinhar a capacidade de processamento ao custo associado
com mais inscritos.
Exemplos de código para controle de fluxo
Para controlar a frequência com que o cliente assinante recebe mensagens, use o método recursos de controle de fluxo do assinante. Esses recursos de controle de fluxo são nos exemplos a seguir:
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++.
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#.
Go
Antes de tentar esse exemplo, siga as instruções de configuração do Go 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 Go.
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.
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 você pode configurar 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
Aumente o tempo de confirmação com o gerenciamento de locação