Menu Docs
Página inicial do Docs
/ / /
Driver de sincronização Java
/ /

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 registrador
  • 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:

  • Configurações do MongoClient

  • Configurações de clusters

  • Configurações do soquete

  • Configurações do Pool de Conexões

  • Configurações do Servidor

  • Configurações TLS/SSL

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

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

Padrão: primary
retryReads()
Se o driver realiza novas leituras se ocorrer um erro de rede.

Padrão: true
retryWrites()
Se o driver realiza gravações repetidas se ocorrer um erro de rede.

Padrão: true
serverApi()
Define a API do servidor a ser usada ao enviar comandos para o servidor.
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.

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://<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 .

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çã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()
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.

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 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.

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

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

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

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

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 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.

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());
← Opções de conexão