Este documento fornece informações sobre a utilização do controlo de simultaneidade com mensagens publicadas num tópico.
O controlo de concorrência ajuda a substituir o número predefinido de threads de entrada/saída (E/S) em segundo plano usados pela biblioteca de cliente para publicar mensagens. Isto permite que os clientes publicadores enviem mensagens em paralelo.
O controlo de simultaneidade é uma funcionalidade disponível na biblioteca de cliente de alto nível do Pub/Sub. Também pode implementar o seu próprio controlo de simultaneidade quando usa uma biblioteca de baixo nível.
O suporte para o controlo de simultaneidade depende da linguagem de programação da biblioteca cliente. Para implementações de idiomas que suportam threads paralelos, como C++, Go e Java, as bibliotecas cliente fazem uma escolha predefinida para o número de threads.
Esta página explica o conceito de controlo de concorrência e como configurar a funcionalidade para os seus clientes publicadores. Para configurar os clientes subscritores para o controlo de simultaneidade, consulte o artigo Processe mais mensagens com o controlo de simultaneidade.
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 publicar mensagens num tópico,
peça ao seu administrador para lhe conceder a
função de IAM Publicador do Pub/Sub (roles/pubsub.publisher
)
no 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.
Configurações de controlo de simultaneidade
Os valores predefinidos das variáveis de controlo de simultaneidade e os nomes das variáveis podem diferir entre as bibliotecas de cliente. Por exemplo, na biblioteca cliente Java, os métodos para configurar o controlo de simultaneidade são setExecutorProvider()
e setChannelProvider()
. Para mais informações, consulte a
documentação de referência da API.
setExecutorProvider() permite-lhe personalizar o fornecedor do executor usado para processar respostas de publicação. Por exemplo, pode alterar o fornecedor do executor para um que devolva um executor único e partilhado com um número limitado de threads em vários clientes publicadores. Esta configuração ajuda a limitar o número de discussões criadas.
setChannelProvider() permite-lhe personalizar o fornecedor do canal usado para abrir ligações ao Pub/Sub. Normalmente, não configura este valor, a menos que queira usar o mesmo canal em vários clientes de publicadores. A reutilização de um canal em demasiados clientes pode resultar em erros
GOAWAY
ouENHANCE_YOUR_CALM
. Se vir estes erros nos registos da sua aplicação ou nos registos da nuvem, crie mais canais.
Exemplos de código para o controlo de simultaneidade
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.
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?
Para restringir as localizações nas quais o Pub/Sub armazena dados de mensagens, consulte o artigo Restringir localizações de recursos do Pub/Sub.
Para saber como receber mensagens, consulte o artigo Escolha um tipo de subscrição.