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 (E/S) em segundo plano usadas pela biblioteca de cliente para publicar mensagens. Isso permite que os clientes do editor enviem mensagens em paralelo.
O controle de simultaneidade é um recurso disponível na biblioteca de cliente de alto nível do Pub/Sub. Também é possível 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 para o número de linhas de execução.
Esta página explica o conceito de controle de simultaneidade e como configurar o recurso para seus clientes de publicação. Para configurar os 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 do 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 ser diferentes nas 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.
setExecutorProvider() permite personalizar o provedor de executor usado para processar respostas de publicação. Por exemplo, é possível 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 de editores. Essa configuração ajuda a limitar o número de linhas de execução criadas.
setChannelProvider() permite personalizar o provedor de canal 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 de editores. A reutilização de um canal em muitos clientes pode resultar em erros
GOAWAY
ouENHANCE_YOUR_CALM
. Se você encontrar esses erros nos registros do seu 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
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
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 mensagem, consulte Como restringir locais de recursos do Pub/Sub.
Para mais informações sobre como receber mensagens, consulte Escolher um tipo de assinatura.