Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Pool de Conexões

Neste guia, você aprenderá como o driver do Java Reactive Streams usa pools de conexões para gerenciar conexões com um 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 Reactive Streams. Quando seu aplicação solicita uma conexão com o MongoDB, o driver Java Reactive Streams 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 Reactive Streams.

Cada instância MongoClient tem um pool de conexões integrado para cada servidor em sua topologia do MongoDB. Os pools de conexões abrem soquetes sob demanda para oferecer suporte às operações simultâneas do MongoDB em seu aplicativo de threads múltiplas.

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.

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

maxConnecting

Número máximo de conexões que um pool pode estabelecer simultaneamente.

Padrão: 2

maxIdleTimeMS

O número máximo de milissegundos que uma conexão pode permanecer inativa no pool antes de ser removida e fechada. Defina esse valor como maior que o período ocioso esperado do seu aplicativo, mas menor que o tempo limite de conexão do firewall ou do proxy para evitar desconexões inesperadas.

Padrão: 0

maxPoolSize

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 maxPoolSize conexões abertas, a nova operação aguardará a abertura de uma nova conexão. Para limitar esse tempo de espera, use a configuração de tempo limite único. Para saber mais, consulte o guia Limitar o tempo de execução do servidor.

Padrão: 100

minPoolSize

Número mínimo de conexões abertas no pool. O valor de minPoolSize deve ser menor que o valor de maxPoolSize.

Padrão: 0

waitQueueTimeoutMS (obsoleto)

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 0 significa que não há limite.

Padrão: 120000 (120 segundos)

maxLifeTimeMS

Especifica a quantidade máxima de tempo, em milissegundos, o driver Java Reactive Streams continuará usando uma pool de conexão antes de fechar a conexão. Um valor de 0 indica que não há limite superior de quanto tempo o driver pode manter uma pool de conexão aberta.

Padrão: 0

Para obter mais informações sobre esses parâmetros, consulte a documentação da API ConnectionString.

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

addConnectionPoolListener()

Adiciona um ouvinte para eventos relacionados ao pool de conexões.

applyConnectionString()

Usa as configurações de um objeto ConnectionString.

applySettings()

Usa as configurações do pool de conexões especificadas em um objeto ConnectionPoolSettings.

connectionPoolListenerList()

Define uma lista de ouvintes do pool de conexões .

maintenanceFrequency()

Define a frequência para executar uma tarefa de manutenção.

maintenanceInitialDelay()

Define o tempo de espera antes de executar o primeiro trabalho de manutenção.

maxConnectionIdleTime()

Define o tempo máximo que uma conexão pode ficar ociosa antes de ser fechada.

maxConnectionLifeTime()

Define o tempo máximo que uma conexão em pool pode ficar ativa antes de ser fechada.

maxConnecting()

Define o número máximo de conexões que um pool pode estabelecer simultaneamente.

maxSize()

Define o número máximo de conexões associadas a um pool de conexões.

Padrão: 100

maxWaitTime()

Define o tempo máximo para aguardar uma conexão disponível.

Padrão: 2 minutes

minSize()

Define o número mínimo de conexões associadas a um pool de conexões.

Padrão: 0

Para saber mais sobre esses métodos, consulte a documentação da API ConnectionPoolSettings.Builder.

O exemplo a seguir mostra como criar um pool de conexões que tenha um tamanho máximo de 50 conexões.

Selecione a aba Connection String ou MongoClientSettings para ver a sintaxe correspondente:

ConnectionString connectionString = new ConnectionString("mongodb://<host>:<port>/?maxPoolSize=50");
try (MongoClient mongoClient = MongoClients.create(connectionString)) {
}
try (MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder().applyConnectionString(
new ConnectionString("<your connection string>"))
.applyToConnectionPoolSettings(builder ->
builder.maxSize(50))
.build())) {

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.