Menu Docs
Página inicial do Docs
/ / /
Java síncrono
/ /

Especificar configurações do MongoClient

Nesta página

  • Visão geral
  • Configurações do MongoClient
  • Configurações de clusters
  • Configurações do Pool de Conexões
  • Configurações do Servidor
  • Configurações do soquete
  • Configurações TLS/SSL

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:

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()

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()
commandListenerList()
compressorList()
Define os compressores a serem usados para comprimir mensagens para o servidor.
credential()
Define a credencial.
readConcern()
readPreference()
Sets the read preference.

Default: primary
retryReads()
Whether the driver performs retry reads if a network error occurs.

Default: true
retryWrites()
Whether the driver performs retry writes if a network error occurs.

Default: true
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.

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:

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 .

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ção

Ao configurar o srvHost, o driver não processa nenhum registro TXT associado associado ao host.

Se quiser ativar o processamento de registros TXT, será necessário especificar o host SRV na cadeia de conexão usando o método applyConnectionString().

MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyConnectionString(new ConnectionString("mongodb+srv://host1.acme.com")))
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.

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.

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.

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ível

  • Ter 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());

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

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());

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

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());

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.

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());

Voltar

Opções de conexão