Este documento fornece informações sobre como usar o controle de simultaneidade com mensagens publicadas em um tópico.
O controle de simultaneidade ajuda a substituir o número padrão de linhas de execução em segundo plano (E/S) usadas pela biblioteca de cliente para publicar mensagens. Isso permite que os clientes editores enviem mensagens em paralelo.
O controle de simultaneidade é um recurso disponível na biblioteca de cliente de alto nível do Pub/Sub. Você também pode implementar seu próprio controle de simultaneidade ao usar uma biblioteca de baixo nível.
O suporte ao controle de simultaneidade depende da linguagem de programação da biblioteca de cliente. Para implementações de linguagem que aceitam linhas de execução paralelas, como C++, Go e Java, as bibliotecas de cliente fazem uma escolha padrão do número de linhas de execução.
Nesta página, explicamos o conceito de controle de simultaneidade e como configurar o recurso para os clientes editores. Para configurar seus clientes assinantes para controle de simultaneidade, consulte Processar mais mensagens com controle de simultaneidade.
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 publicar mensagens em um tópico,
peça ao administrador para conceder a você o papel do IAM
Editor do Pub/Sub (roles/pubsub.publisher
)
no 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.
Configurações de controle de simultaneidade
Os valores padrão das variáveis de controle de simultaneidade e os nomes das variáveis podem variar entre as bibliotecas de cliente. Por exemplo, na biblioteca de cliente
Java, os métodos para configurar o controle de simultaneidade são
setExecutorProvider()
e setChannelProvider()
. Para mais informações, consulte a
documentação de referência da API.
Com setExecutorProvider(), é possível personalizar o provedor de executor usado para processar respostas de publicação. Por exemplo, você pode mudar o provedor de executor para um que retorne um único executor compartilhado com um número limitado de linhas de execução em vários clientes editores. Essa configuração ajuda a limitar o número de linhas de execução criadas.
setChannelProvider() permite personalizar o provedor de canais usado para abrir conexões com o Pub/Sub. Normalmente, você não configura esse valor, a menos que queira usar o mesmo canal em vários clientes editores. Reutilizar um canal em muitos clientes pode resultar em erros
GOAWAY
ouENHANCE_YOUR_CALM
. Se você encontrar esses erros nos registros do aplicativo ou no Cloud Logging, crie mais canais.
Exemplos de código para controle de simultaneidade
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
O exemplo a seguir usa a versão principal da biblioteca de cliente do Go Pub/Sub (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
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.
Ruby
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
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
Para restringir os locais em que o Pub/Sub armazena dados de mensagens, consulte Como restringir locais de recursos do Pub/Sub.
Para saber mais sobre como receber mensagens, consulte Escolher um tipo de assinatura.