Este documento fornece informações sobre a utilização do controlo de fluxo com mensagens publicadas num tópico.
Acerca do controlo do fluxo
Um cliente publicador pode tentar publicar mensagens mais rapidamente do que é capaz de enviar dados para o serviço Pub/Sub. Os clientes estão limitados por muitos fatores, incluindo:
- CPU, RAM e capacidade de rede da máquina
- Definições de rede, como o número de pedidos pendentes e a largura de banda disponível
- A latência de cada pedido de publicação, determinada em grande parte pelas ligações de rede entre o serviço Pub/Sub, o cliente e Google Cloud
Se a taxa de pedidos de publicação exceder estes limites, os pedidos acumulam-se na memória até falharem com um erro DEADLINE_EXCEEDED
. Isto é especialmente provável quando são publicadas dezenas de milhares de mensagens num ciclo, gerando milhares de pedidos em milissegundos.
Pode diagnosticar este problema verificando as métricas do lado do servidor na monitorização. Não
pode ver os pedidos que falharam com DEADLINE_EXCEEDED
, apenas os
pedidos bem-sucedidos. A taxa de pedidos bem-sucedidos indica a capacidade de débito das suas máquinas cliente, fornecendo uma base para configurar o controlo de fluxo.
Para mitigar problemas de taxa de fluxo, configure o cliente do publicador com controlo de fluxo para limitar a taxa de pedidos de publicação. Pode configurar o número máximo de bytes atribuídos a pedidos pendentes e o número máximo de mensagens pendentes permitidas. Defina estes limites de acordo com a capacidade de débito das suas máquinas cliente.
Antes de começar
Antes de configurar o fluxo de trabalho de publicação, certifique-se de que concluiu as seguintes tarefas:
- Saiba mais sobre os tópicos e o fluxo de trabalho de publicação.
- Crie um tópico.
Funções necessárias
Para receber as autorizações de que
precisa para usar o controlo de fluxo,
peça ao seu administrador para lhe conceder a função de IAM
publicador do Pub/Sub (roles/pubsub.publisher
)
no seu tópico.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Precisa de autorizações adicionais para criar ou atualizar tópicos e subscrições.
Use o controlo de fluxo com mensagens
O controlo do fluxo do publicador está disponível através das bibliotecas cliente do Pub/Sub nos seguintes idiomas:
C++
Antes de experimentar este exemplo, siga as instruções de configuração do C++ no artigo 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.
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go 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.
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.