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 MongoClient
criando e passando um objeto MongoClientSettingspara 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 todos 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. |
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. |
streamFactoryFactory() | Define a fábrica para utilizar para criar um StreamFactory . |
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(5, 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 todos 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() | 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() | 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 todos 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 Servidor
Encadeie o método applyToServerSettings() para modificar o comportamento do driver ao monitorar cada implantação do MongoDB.
A tabela a seguir descreve todos 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 todos 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());