Visão geral
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.
Criar um pool de conexões
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.
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. 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: |
| 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 Reactive Streams continuará usando uma pool de conexão antes de fechar a conexão. Um valor de Padrão: |
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 |
|---|---|
| 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 uma lista de ouvintes do pool de conexões . |
| 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. |
| Define o número máximo de conexões que um pool pode estabelecer simultaneamente. |
| Define o número máximo de conexões associadas a um pool de conexões. 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 associadas a um pool de conexões. 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 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())) {
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.