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 para as 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
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++.
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.
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.
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.