O controle de simultaneidade é um recurso disponível no Pub/Sub biblioteca de cliente de alto nível. 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 compatíveis com linhas de execução paralelas, como C++, Go e Java, as bibliotecas de cliente são a escolha padrão para o número de linhas de execução.
Essa escolha pode não ser ideal para o aplicativo. Por exemplo, se o aplicativo assinante não estiver acompanhando o volume de mensagens recebidas e não estiver limitado à CPU, aumente a contagem de linhas de execução. Para operações de processamento de mensagens intensivas da CPU, reduzir o número de linhas de execução pode ser apropriado.
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, no cliente Java
os métodos para configurar o controle de simultaneidade são
setSystemExecutorProvider()
, setExecutorProvider()
e setParallelPullCount()
.
setParallelPullCount() permite que você decida quantos streams abrir. Você pode abrir mais streams se o cliente assinante puder lidar com mais dados do que isso é enviado em um único stream de 10 MBps.
setExecutorProvider() permite personalizar o provedor de executor usado para o processamento de mensagens. 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 de assinante. Essa configuração ajuda a limitar o número de linhas de execução criadas.
setSystemExecutorProvider() permite personalizar o provedor de executor usado para gerenciamento de leases. Normalmente, você não configura esse valor, a menos use o mesmo provedor de executor em
setExecutorProvider
esetSystemExecutorProvider
. Por exemplo, é possível usar o mesmo provedor de executor se você tiver várias assinaturas de baixa capacidade. Usar o mesmo valor limita o número de linhas de execução no cliente.
O número total de linhas de execução usadas para o controle de simultaneidade depende do provedor de executor transmitido na biblioteca de cliente e da contagem de extração paralela.
Amostras 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
Leia sobre as outras opções de exibição que podem ser configuradas para uma assinatura:
Lidar com falhas de mensagens com a política de nova tentativa de assinatura
Encaminhar mensagens não entregues para um tópico de mensagens inativas
Reproduzir mensagens confirmadas anteriormente ou limpar mensagens
Aumente o tempo de confirmação com o gerenciamento de locação