Visão geral
Neste guia, você aprenderá como o driver Scala usa pools de conexões para gerenciar conexões com uma implantação do MongoDB e como você pode configurar as definições do pool de conexões em seu aplicativo.
Um pool de conexões é um cache de conexões de banco de dados abertas mantidas pelo driver Scala. Seu aplicativo recupera uma conexão do pool, executa operações e retorna a conexão para reutilização.
O uso de um pool de conexões reduz a latência e minimiza o número de vezes que o driver cria novas conexões.
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 a operações simultâneas do MongoDB em seu aplicativo.
A opção maxPoolSize define o tamanho máximo de cada pool de conexões, cujo padrão é 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 configurar um 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 string de conexão para configurar um pool de conexões:
Opção | Descrição |
|---|---|
| O número máximo de conexões que o driver pode estabelecer simultaneamente. Padrão: |
| O número máximo de milissegundos que uma conexão pode permanecer inativa no pool antes que o driver a feche. Um valor de Padrão: |
| O número máximo de conexões que o driver pode ter abertas ao mesmo tempo em um único pool de conexões. Padrão: |
| O número mínimo de conexões que o driver mantém em um único pool de conexões. Este valor deve ser menor que Padrão: |
| Esta opção está obsoleta. Em vez disso, use 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: |
| O número máximo de milissegundos que uma conexão pode permanecer aberta. Um valor de Padrão: |
Para obter mais informações, consulte a documentação da API ConnectionString.
Encadeie o método applyToConnectionPoolSettings() à classe MongoClientSettings.Builder para configurar um pool de conexões. A tabela a seguir descreve os métodos ConnectionPoolSettings.Builder que você pode encadear para configurar o pool:
Método | Descrição |
|---|---|
| Adiciona um ouvinte para eventos do pool de conexões. |
| Aplica as configurações de um objeto |
| Aplica as configurações de um objeto |
| Define uma lista de ouvintes do pool de conexões. |
| Define a frequência da tarefa periódica que gerencia conexões ociosas e expiradas. |
| Define o período de tempo de espera antes de executar o primeiro tarefa de manutenção no pool de conexões. |
| Define o tempo máximo de inatividade para uma conexão agrupada. Um valor de |
| Define o tempo de vida máximo de uma conexão agrupada. Um valor de |
| Define o número máximo de conexões que um pool pode estabelecer simultaneamente. Padrão: |
| Define o número máximo de conexões permitidas no 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 o driver mantém no pool. Padrão: |
Observação
As configurações maxSize() e minSize() aplicam-se a cada servidor em sua implantação individualmente, não ao pool como um todo.
Para saber mais, 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:
val mongoClient = MongoClient("mongodb://<host>:<port>/?maxPoolSize=50")
val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString("<connection string>")) .applyToConnectionPoolSettings( (builder: ConnectionPoolSettings.Builder) => builder.maxSize(50)) .build() val mongoClientWithSettings = MongoClient(settings)
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.
Documentação da API
Para saber mais sobre os tipos e métodos discutidos neste guia, consulte a seguinte documentação da API: