Especificar configurações do MongoClient
Nesta página
Visão geral
Neste guia, você aprenderá sobre as diferentes configurações para controlar o comportamento do seu MongoClient
.
As seções a seguir descrevem as configurações comumente usadas:
Configurações do MongoClient
Você pode controlar o comportamento do seu criando MongoClient
e passando em um MongoClientSettings objeto para o MongoClients.create() método.
Para criar um objeto MongoClientSettings
, utilize o método MongoClientSettings.builder()
e métodos de cadeia para especificar suas configurações. Após encadeá-los, use o método build()
para criar o objeto MongoClientSettings
.
A tabela a seguir descreve os métodos que você pode criar para modificar seu comportamento de conexão:
Método | Descrição |
---|---|
addCommandListener() | Adiciona um ouvinte paraeventos de comando . |
applicationName() | Define o nome lógico do aplicativo utilizando o MongoClient . |
applyConnectionString() | Aplica as configurações do ConnectionString fornecido ao construtor. Se você omitir este método, o driver tentará se conectar ao localhost . |
applyToClusterSettings() | Aplica o bloco ClusterSettings.Builder e, em seguida, define as configurações de cluster. |
applyToConnectionPoolSettings() | Aplica o bloco ConnectionPoolSettings.Builder e, em seguida, define as configurações do pool de conexões. |
applyToLoggerSettings() | Aplica o bloco LoggerSettings.Builder e, em seguida, define as configurações do registrador. |
applyToServerSettings() | Aplica o bloco ServerSettings.Builder e, em seguida, define as configurações do servidor. |
applyToSocketSettings() | Aplica o bloco SocketSettings.Builder e, em seguida, define as configurações do soquete. |
applyToSslSettings() | Aplica o bloco SslSettings.Builder e, em seguida, define as configurações TLS/SSL. |
autoEncryptionSettings() | Define as configurações de criptografia automática. Se omitir keyVaultClient ou definir bypassAutomaticEncryption como falso no seu AutoEncryptionSettings , o driver cria um MongoClient interno separado.A configuração interna do MongoClient difere da MongoClient mãe definindo o minPoolSize como 0 e omitindo o AutoEncryptionSettings . |
codecRegistry() | Define o registro de codec. |
commandListenerList() | Define os ouvintes de comando. |
compressorList() | Define os compressores a serem usados para comprimir mensagens para o servidor. |
credential() | Define a credencial. |
readConcern() | Define a read concern. |
readPreference() | |
retryReads() | |
retryWrites() | |
serverApi() | Define a API do servidor a ser usada ao enviar comandos para o servidor. |
transportSettings() | Define TransportSettings. |
uuidRepresentation() | Define a representação UUID para utilizar ao codificar instâncias de UUID e decodificando valores binários BSON com subtipo de 3. |
writeConcern() | Define a write concern. Padrão: WriteConcern#ACKNOWLEDGED . Para obter mais informações sobre o valor padrão, consulte Preocupação de gravação padrão implícita. |
Exemplo
Este exemplo demonstra a especificação de um ConnectionString
:
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyConnectionString(new ConnectionString("<your connection string>")) .build());
Observação
Ordem de corrente
Algumas opções no mapa de configurações para uma opção de cadeia de conexão. Se você especificar as mesmas opções em suas configurações e na cadeia de conexão, a ordem em que você as encadear determinará qual opção o driver usará. O driver usa a última configuração lida.
Por exemplo, esse trecho contém configurações com os seguintes horários para o driver se conectar a um soquete disponível:
A cadeia de conexão especifica dentro
2 SECONDS
As configurações de soquete especificam dentro de
5 SECONDS
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("mongodb+srv://<username>:<password>@<hostname>:<port>/<auth db>?connectTimeoutMS=2000")) .applyToSocketSettings(builder -> builder.connectTimeout(5L, SECONDS)) .build());
Como o driver lê as opções de configurações de soquete por último, o driver espera se conectar a um soquete disponível dentro de 5 SECONDS
antes de atingir o tempo limite.
Dica
Registre suas Configurações
Para registrar as configurações de instância do MongoClient
, defina o org.mongodb.driver.client
denominado logger para o nível INFO
.
Para saber mais sobre como registrar com o MongoDB Java Driver, consulte o Guia de Registro .
Configurações de clusters
Encadeie o applyToClusterSettings() método para modificar o comportamento do driver ao interagir com o cluster MongoDB.
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 | |||
---|---|---|---|---|
addClusterListener() | Adiciona um ouvinte para eventos relacionados ao cluster. | |||
applyConnectionString() | Usa as configurações de um objeto ConnectionString . | |||
applySettings() | Utiliza as configurações de cluster especificadas em um objeto de ClusterSettings . | |||
hosts() | Define todas as localizações especificadas de uma implantação do Mongo. | |||
localThreshold() | Define a quantidade de tempo que uma viagem de ida e volta do servidor pode levar e ainda ser elegível para a seleção do servidor. Padrão: 15 milliseconds | |||
mode() | Define como se conectar a um sistema MongoDB. | |||
requiredClusterType() | Define o tipo de cluster necessário para o cluster. | |||
requiredReplicaSetName() | Define o nome do conjunto de réplicas necessário para o cluster. | |||
serverSelectionTimeout() | Define o tempo máximo para selecionar um nó primário antes de lançar uma exceção de tempo limite. Padrão: 30 seconds | |||
serverSelector() | Adiciona um seletor de servidor para aplicar antes da seleção do servidor. | |||
srvHost() | Define o nome do host a ser usado para procurar um registro DNS SRV para localizar os hosts MongoDB. ObservaçãoAo configurar o Se quiser ativar o processamento de registros TXT, será necessário especificar o host SRV na cadeia de conexão usando o método
| |||
srvMaxHosts() | Define o número máximo de hosts aos quais o driver pode se conectar ao usar o protocolo de conexão de seedlist de DNS (SRV), identificado pelo prefixo de cadeia de conexão do mongodb+srv .Lança uma exceção se você não estiver usando o protocolo de conexão SRV. |
Exemplo
Esse exemplo especifica que o driver deve se conectar diretamente a um servidor, independentemente do tipo de cluster MongoDB do qual ele faz parte:
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.mode(ClusterConnectionMode.SINGLE) .build());
Dica
Isto é análogo ao parâmetro directConnection
que você pode especificar em seu URI de conexão. Consulte Opções de Conexão para obter mais informações.
Configurações do Pool de Conexões
Encadeie o applyToConnectionPoolSettings() método 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 . |
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. |
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 |
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
.
Exemplo
Este exemplo especifica o seguinte comportamento do driver em um pool de tipos de Connection
:
O thread que aguardará no máximo
10 SECONDS
por uma conexão disponívelTer no máximo
200
conexões associadas ao grupo
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToConnectionPoolSettings(builder -> builder.maxWaitTime(10, SECONDS) .maxSize(200) .build());
Configurações do registrador
Encadeie o applyToLoggerSettings() para modificar o comportamento de registro do driver.
A tabela a seguir descreve os métodos que você pode conectar às suas configurações para modificar o comportamento de registro:
Método | Descrição |
---|---|
maxDocumentLength() | Define o tamanho máximo do documento, em caracteres, de uma única mensagem de registro. Padrão: 1000 |
Exemplo
Este exemplo especifica que o número máximo de caracteres para uma única mensagem de registro é definido como 5000
caracteres.
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToLoggerSettings(builder -> builder.maxDocumentLength(5_000)) .build());
Configurações do Servidor
Encadeie o applyToServerSettings() método para modificar o comportamento do driver ao monitorar cada implementação do MongoDB.
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 |
---|---|
addServerListener() | Adiciona um ouvinte para eventos relacionados ao servidor. |
addServerMonitorListener() | Adiciona um ouvinte para eventos relacionados ao monitoramento do servidor. |
applyConnectionString() | Usa as configurações de um objeto ConnectionString . |
applySettings() | Utiliza as configurações do servidor especificadas em um objeto ServerSettings . |
heartbeatFrequency() | Define o intervalo para um monitor de cluster tentar alcançar um servidor. Padrão: 10 seconds |
minHeartbeatFrequency() | Define o intervalo mínimo para verificações de monitoramento do servidor. Padrão: 500 milliseconds |
Exemplo
Este exemplo especifica o seguinte comportamento do driver em um MongoDB deployment:
O intervalo mínimo para verificações de monitoramento do servidor deve ser de pelo menos
700 MILLISECONDS
O monitor de cluster para tentar alcançar um servidor a cada
15 SECONDS
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToServerSettings(builder -> builder.minHeartbeatFrequency(700, MILLISECONDS) .heartbeatFrequency(15, SECONDS)) .build());
Configurações do soquete
Encadeie o applyToSocketSettings() método para modificar o comportamento do driver ao se conectar e se comunicar com sua implementação do MongoDB.
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 |
---|---|
applyConnectionString() | Usa as configurações de um objeto ConnectionString . |
applySettings() | Utiliza as definições de terminais especificadas num objeto SocketSettings . |
connectTimeout() | Define o tempo máximo para se conectar a um soquete disponível antes de lançar uma exceção de tempo limite. Padrão: 10 seconds |
readTimeout() | Define o tempo máximo para ler a partir de um soquete disponível antes de lançar uma exceção de tempo limite. Padrão: 0 , que indica que não há tempo limite |
receiveBufferSize() | Define o tamanho do buffer do soquete ao receber. Padrão: O padrão do sistema operacional |
sendBufferSize() | Define o tamanho do buffer do soquete ao enviar. Padrão: O padrão do sistema operacional |
Exemplo
Este exemplo especifica o seguinte comportamento do driver em um soquete do MongoDB:
Para se conectar a um soquete disponível em
10 SECONDS
Para ler um soquete disponível dentro
15 SECONDS
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToSocketSettings(builder -> builder.connectTimeout(10, SECONDS) .readTimeout(15, SECONDS)) .build());
Configurações TLS/SSL
Encadeie o applyToSslSettings() método para modificar o comportamento do driver ao usar TLS/SSL para proteger uma conexão entre seu aplicativo e MongoDB.
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 |
---|---|
applyConnectionString() | Usa as configurações de um objeto ConnectionString . |
applySettings() | Utiliza as configurações TLS/SSL especificadas em um objeto SslSettings . |
context() | Define o SSLContext para uso quando você habilita TLS/SSL. |
enabled() | Se o TLS/SSL deve ser habilitado. (Você deve habilitar isso para Atlas clusters.) |
invalidHostNameAllowed() | Se permitir ou não uma incompatibilidade entre o nome de host do servidor e o nome de host especificado pelo certificado TLS. |
Exemplo
Este exemplo especifica para o driver habilitar TLS/SSL ao conectar ao MongoDB:
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .applyToSslSettings(builder -> builder.enabled(true)) .build());