Visão geral
Neste guia, você aprenderá como o driver Java usa pools de conexões para gerenciar conexões com o MongoDB deployment e como definir as configurações do pool de conexões em seu aplicação.
Um pool de conexões é um cache de conexões de banco de dados abertas mantidas pelo driver Java . Quando seu aplicação solicita uma conexão com o MongoDB, o driver Java obtém uma conexão do pool sem problemas, 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 novas conexões são criadas pelo driver Java .
Criar um pool de conexões
Cada instância do MongoClient
tem um pool de conexão embutida para cada servidor em sua topologia MongoDB. Os pools de conexão abrem soquetes sob demanda para dar suporte a operações simultâneas do MongoDB em seu aplicativo multithread.
A opção maxPoolSize
define o tamanho máximo de cada pool de conexões, que é padronizado como 100. Se o número de conexões em uso com um servidor atingir o valor de maxPoolSize
, a próxima solicitação para esse servidor aguardará até que uma conexão fique disponível.
Cada instância MongoClient
abre mais dois soquetes por servidor em sua topologia MongoDB para monitorar o estado do servidor.
Configurar um pool de conexões
Você pode especificar configurações para o pool de conexões usando uma string de conexão ou passando um objeto MongoClientSettings
para o método MongoClients.create()
.
Selecione a aba Connection String ou MongoClientSettings para ver a sintaxe correspondente :
Veja a seguir as configurações de string de conexão que você pode usar para configurar o pool de conexões:
Contexto | Descrição |
---|---|
| Número máximo de conexões que um pool pode estabelecer simultaneamente. Padrão: |
| O número máximo de milissegundos que uma conexão pode permanecer inativa no pool antes de ser removida e fechada. Padrão: |
| Número máximo de conexões abertas no pool. Se uma operação precisar de uma nova conexão enquanto o pool de conexões tiver Padrão: |
| Número mínimo de conexões abertas no pool. O valor de Padrão: |
| Esta opção está obsoleta. Você pode configurar esse tempo limite definindo o tempo limite no nível do cliente. Tempo máximo de espera, em milissegundos, que uma operação pode esperar que uma conexão fique disponível. Um valor de Padrão: |
| Especifica a quantidade máxima de tempo, em milissegundos, o driver Java continuará usando uma pool de conexão antes de fechar a conexão. Um valor de Padrão: |
O código a seguir cria um cliente com um tamanho máximo de pool de conexões de 50
.
ConnectionString connectionString = "mongodb://<host>:<port>/?maxPoolSize=50" MongoClient mongoClient = MongoClients.create(connectionString)
Para obter mais informações sobre esses parâmetros, consulte a documentação da APIConnectionString .
Encadeie o método applyToConnectionPoolSettings() para modificar a maneira como o driver gerencia seu pool de conexões.
A tabela a seguir descreve os métodos que você pode conectar às suas configurações para modificar o comportamento do driver:
Método | Descrição |
---|---|
| Adiciona um ouvinte para eventos relacionados ao pool de conexões. |
| Usa 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 uma tarefa de manutenção. |
| Define o tempo de espera antes de executar o primeiro trabalho de manutenção. |
| 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 ativa antes de ser fechada. |
|
Padrão: |
| Define o tempo máximo para aguardar uma conexão disponível. Padrão: |
|
Padrão: |
Observação
Estas configurações do maxSize
e minSize
se aplicam a cada servidor no cluster ao qual você conecta o driver.
Por exemplo, suponha que você conecte o driver a um cluster com três servidores mongos
. Isto significa que pode haver no máximo maxSize
conexões e pelo menos minSize
conexões para cada servidor mongos
.
O exemplo a seguir encadeia o método applyToConnectionPoolSettings()
para definir o thread para aguardar no máximo 10 SECONDS
por uma conexão disponível e o maxSize
do pool de conexões para 200:
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString( new ConnectionString("<your connection string>")) .applyToConnectionPoolSettings(builder -> builder.maxSize(50)) .build());
Informações adicionais
Para obter mais informações sobre como usar um pool de conexões, consulte a documentação do Pool de conexões no manual do servidor.