Este documento fornece informações sobre como usar o controle de fluxo com mensagens publicadas em um tópico.
Sobre o controle de fluxo
Um cliente editor pode tentar publicar mensagens mais rapidamente do que o cliente é capaz de enviar dados para o serviço Pub/Sub. Os clientes são limitados por muitos fatores, incluindo:
- CPU da máquina, RAM e capacidade da rede
- configurações de rede, como o número de solicitações pendentes e a largura de banda disponível;
- A latência de cada solicitação de publicação, em grande parte determinada pelas conexões de rede entre o serviço Pub/Sub, o cliente e o Google Cloud
Se a taxa de solicitação de publicação exceder esses limites, as solicitações serão acumuladas na memória
até falharem com um erro DEADLINE_EXCEEDED
. Isso ocorre especialmente quando dezenas de milhares de mensagens são publicadas em loop, gerando milhares de solicitações em milissegundos.
Para diagnosticar esse problema, verifique as métricas do servidor no Monitoring. Você não conseguirá ver as solicitações que falharam com DEADLINE_EXCEEDED
, somente as solicitações bem-sucedidas. A taxa de solicitações bem-sucedidas informa a
capacidade das máquinas clientes, fornecendo um valor de referência para configurar o controle
de fluxo.
Acessar a página do Monitoring
Para reduzir os problemas de taxa de fluxo, configure seu cliente editor com controle de fluxo para limitar a taxa de solicitações de publicação. Você pode configurar o número máximo de bytes alocados para solicitações pendentes e o número máximo de mensagens pendentes permitidas. Defina esses limites de acordo com a capacidade dos computadores clientes.
Antes de começar
Antes de configurar o fluxo de trabalho de publicação, verifique se você concluiu as seguintes tarefas:
- Saiba mais sobre temas e o fluxo de trabalho de publicação.
- Crie um tópico.
Funções exigidas
Para receber as permissões necessárias para usar o controle de fluxo,
peça ao administrador para conceder a você o
Editor do Pub/Sub (roles/pubsub.publisher
) do IAM no seu tópico.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Você precisa de permissões adicionais para criar ou atualizar tópicos e assinaturas.
Usar o controle de fluxo com mensagens
O controle de fluxo do editor está disponível usando as bibliotecas de cliente do Pub/Sub nas seguintes linguagens:
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.