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.
A compatibilidade com o controle de simultaneidade depende da linguagem de programação da biblioteca de cliente. Para implementações de linguagem que oferecem suporte a 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.
Talvez essa opção não seja ideal para seu aplicativo. Por exemplo, se o aplicativo assinante não estiver acompanhando o volume de mensagens recebidas e não estiver vinculado à CPU, você precisará aumentar a contagem de linhas de execução. Para operações de processamento de mensagens com uso intensivo 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 delas 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
setSystemExecutorProvider()
, setExecutorProvider()
e setParallelPullCount()
.
setParallelPullCount() permite decidir quantos streams serão abertos. Você pode abrir mais streams se o cliente assinante conseguir lidar com mais dados do que o enviado em um único stream com 10 MBps.
setExecutorProvider() permite personalizar o provedor do executor usado para processar 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 assinantes. 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 alocação. Normalmente, você não configura esse valor, a menos que queira usar o mesmo provedor de executor em
setExecutorProvider
esetSystemExecutorProvider
. Por exemplo, você poderá usar o mesmo provedor de executor se 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 controle de simultaneidade depende do provedor de executor transmitido na biblioteca de cliente e da contagem de pulls paralelos.
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
Leia sobre as outras opções de entrega 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
Aumentar o tempo de confirmação com o gerenciamento de lease