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 um objeto MongoClientSettings para o método MongoClients.create()
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() | Sets the auto-encryption settings. If you omit keyVaultClient or set
bypassAutomaticEncryption to false in your
AutoEncryptionSettings , the driver creates a separate,
internal MongoClient .The internal MongoClient configuration differs from the
parent MongoClient by setting the minPoolSize to 0 and
omitting the 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 preocupação de leitura. |
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() | Sets the write concern. Default: WriteConcern#ACKNOWLEDGED . For more information about
the default value, see Implicit Default Write Concern. |
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://<db_username>:<db_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 método applyToClusterSettings() para modificar o comportamento do driver ao interagir com o cluster 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 | |||
---|---|---|---|---|
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() | Sets the amount of time that a server’s round trip can take and still
be eligible for server selection. Default: 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() | Sets the maximum time to select a primary node before throwing a
timeout exception. Default: 30 seconds | |||
serverSelector() | Adiciona um seletor de servidor para aplicar antes da seleção do servidor. | |||
srvHost() | Sets the host name to use to look up an SRV DNS record to find the
MongoDB hosts. If you want to enable the processing of TXT records associated with the host,
specify the SRV host in the connection string
using the applyConnectionString() method.For example:
| |||
srvMaxHosts() | Sets the maximum number of hosts the driver can connect to when using
the DNS seedlist (SRV) connection protocol, identified by the
mongodb+srv connection string prefix.Throws an exception if you are not using the SRV connection protocol. |
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 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 . |
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() | Sets the maximum number of connections associated with a connection
pool. Default: 100 |
maxWaitTime() | Sets the maximum time to wait for an available connection. Default: 2 minutes |
minSize() | Sets the minimum number of connections associated with a connection
pool. Default: 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 método 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() | Sets the maximum document length, in characters, of a single log
message. Default: 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 método applyToServerSettings() para modificar o comportamento do driver ao monitorar cada implantaçã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() | Sets the interval for a cluster monitor to attempt reaching a server. Default: 10 seconds |
minHeartbeatFrequency() | Sets the minimum interval for server monitoring checks. Default: 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 método applyToSocketSettings() para modificar o comportamento do driver ao se conectar e se comunicar com sua implantaçã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() | Sets the maximum time to connect to an available socket before throwing
a timeout exception. Default: 10 seconds |
readTimeout() | Sets the maximum time to read from an available socket before throwing a
timeout exception. Default: 0 , which indicates no timeout |
receiveBufferSize() | Sets the socket's buffer size when receiving. Default: The operating system default |
sendBufferSize() | Sets the socket's buffer size when sending. Default: The operating system default |
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 método applyToSslSettings() para modificar o comportamento do driver ao usar TLS/SSL para proteger uma conexão entre o aplicativo e o 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());