Visão geral
Neste guia, você aprenderá como o driver do Kotlin Sync usa os pools de conexões para gerenciar conexões com o MongoDB deployment. Você pode especificar as configurações do pool de conexões em seu aplicação para configurar esse comportamento.
Um pool de conexões é um cache de conexões de banco de dados abertas mantidas pelo driver Kotlin Sync. Quando seu aplicação solicita uma conexão com MongoDB, o driver recupera uma conexão do pool, executa operações e retorna a conexão ao pool para reutilização.
Os pools de conexões ajudam a reduzir a latência de aplicação e o número de vezes que o driver cria novas conexões.
Criar um pool de conexões
Cada instância do MongoClient
tem um pool de conexões embutida para cada servidor em sua topologia MongoDB . Se você não configurar a opção minPoolSize
, os pools de conexões abrirão os soquetes sob demanda. Esses soquetes suportam operações simultâneas do MongoDB em seu aplicação.
Quando você instancia um novo MongoClient
, o cliente abre dois soquetes por servidor em sua topologia MongoDB para monitorar o estado do servidor.
Por exemplo, um cliente conectado a um conjunto de réplicas de três nós abre seis soquetes de monitoramento. Se o aplicação usar a configuração padrão para maxPoolSize
e consultar apenas o nó primário, poderá haver no máximo 106
soquetes abertos e 100
conexões no pool de conexões. Se a aplicação usar uma preferência de leitura para executar query dos nós secundários, poderá haver 306
conexões totais.
Por questões de eficiência, crie um cliente uma vez para cada processo e reutilize-o para todas as operações. Evite criar um novo cliente para cada solicitação, pois isso aumentará a latência.
Configurar um pool de conexões
Você pode especificar configurações para o pool de conexões usando uma string de conexão ou um objeto MongoClientSettings
.
Selecione a aba Connection String ou MongoClientSettings para ver a sintaxe correspondente :
A tabela a seguir descreve as opções de pool de conexões que você pode definir em sua string de conexão:
Opção | Descrição |
---|---|
| Define o número máximo de conexões que um pool pode estabelecer simultaneamente. Padrão: |
| Define o número máximo de milissegundos que uma conexão pode permanecer inativa no pool antes de ser removida e fechada. Padrão: |
| Define o número máximo de conexões que podem ser abertas em um pool. Se uma operação precisar de uma nova conexão enquanto o pool de conexões tiver o número máximo de conexões abertas, a operação aguardará a abertura de uma nova conexão. Padrão: |
| Define o número mínimo de conexões que podem ser abertas em um pool. O valor de Padrão: |
| Define a quantidade máxima de tempo, em milissegundos, o driver pode continuar a usar uma pool de conexão antes de fechar a conexão. Um valor de Padrão: |
Para saber mais sobre essas opções, consulte a documentação daAPI ConnectionString.
Para especificar as configurações do pool de conexões em um objeto MongoClientSettings
, encadeie o método applyToConnectionPoolSettings()
ao construtor MongoClientSettings
. Passe um bloco ConnectionPoolSettings.Builder
como parâmetro para o método applyToConnectionPoolSettings()
.
A tabela a seguir descreve os métodos de configuração que você pode usar em um bloco ConnectionPoolSettings.Builder
para configurar o pool de conexões:
Método | Descrição |
---|---|
| Adiciona um ouvinte para eventos relacionados ao pool de conexões. |
| Aplica as configurações de um objeto |
| Usa as configurações do pool de conexões especificadas em um objeto |
| Define a frequência para executar trabalhos de manutenção do pool de conexões . |
| Define o tempo de espera antes de executar o primeiro tarefa de manutenção no pool de conexões. |
| Define o tempo máximo que uma conexão pode ficar ociosa antes de ser fechada. |
| Define o tempo máximo que uma conexão em pool pode ficar aberta antes de ser fechada. |
| Define o número máximo de conexões que podem ser abertas em um pool. Padrão: |
| Define o tempo máximo para aguardar uma conexão disponível. Padrão: |
| Define o número mínimo de conexões que podem ser abertas em um pool. Padrão: |
Para saber mais sobre esses métodos, consulte a documentação da API ConnectionPoolSettings.Builder.
Exemplo
O exemplo a seguir mostra como criar um pool de conexões que tenha tamanho máximo de 50
conexões.
Selecione a aba Connection String ou MongoClientSettings para ver a sintaxe correspondente:
val uri = "mongodb://<host>:<port>/?maxPoolSize=50" val client = MongoClient.create(uri)
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyConnectionString(ConnectionString("mongodb://<host>:<port>/")) .applyToConnectionPoolSettings { builder -> builder.maxSize(50) } .build() )
Informações adicionais
Para saber mais sobre como usar um pool de conexões, consulte Visão geral do pool de conexões no manual do MongoDB Server.