Visão geral
Esta página contém exemplos de código que mostram como conectar seu aplicação Java Reactive Streams ao MongoDB com várias configurações.
Dica
Para saber mais sobre as opções de conexão nesta página, consulte o link fornecido em cada seção.
Para usar um exemplo de conexão desta página, copie o exemplo de código no aplicativo de exemplo ou em seu próprio aplicativo. Certifique-se de substituir todos os espaços reservados nos exemplos de código, como <Atlas connection string>, pelos valores relevantes para sua implantação do MongoDB.
Importante
Biblioteca do Reator do Projeto
Este guia usa a biblioteca Project Reactor para consumir instâncias do Publisher retornadas pelos métodos de driver Java Reactive Streams. Para saber mais sobre a biblioteca do Projeto Reactor e como usá-la, consulte Introdução na documentação do Reactor. Para aprender mais sobre como usamos os métodos da biblioteca Projeto Reactor neste guia, consulte o guia Inserir documentos.
Você pode usar o seguinte aplicativo de exemplo para testar os exemplos de código nesta página. Para usar o aplicativo de amostra, execute as seguintes etapas:
Crie um novo projeto Java no seu IDE.
Instale o driver Java Reactive Streams em seu projeto Java .
Instale a biblioteca do Projeto Reactor em seu projeto Java.
Copie o código a seguir e cole-o em um novo arquivo Java chamado
ConnectionApp.java.Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.
import com.mongodb.ConnectionString;import com.mongodb.MongoClientSettings;import com.mongodb.ServerApi;import com.mongodb.ServerApiVersion;
import org.bson.BsonDocument;import org.bson.BsonInt64;import org.bson.Document;
import com.mongodb.reactivestreams.client.MongoClient;import com.mongodb.reactivestreams.client.MongoClients;import com.mongodb.reactivestreams.client.MongoDatabase;import org.bson.conversions.Bson;import reactor.core.publisher.Mono;
class ConnectionApp { public static void main(String[] args) { //start example code here //end example code here { Bson command = new BsonDocument("ping", new BsonInt64(1)); MongoDatabase database = mongoClient.getDatabase("admin"); Publisher<Document> MonoPublisher = database.runCommand(command);
Mono.from(MonoPublisher) .doOnSuccess(x -> System.out.println("Pinged your deployment. You successfully connected to MongoDB!")) .doOnError(err -> System.out.println("Error: " + err.getMessage())) .block();
//other application code
} }}Conexão
Sistemas locais
String uri = "mongodb://<hostname>:<port>/";
try (MongoClient mongoClient = MongoClients.create(uri))Atlas
String uri = "<Atlas connection string>";
ServerApi serverApi = ServerApi.builder() .version(ServerApiVersion.V1) .build();
MongoClientSettings settings = MongoClientSettings.builder() .applyConnectionString(new ConnectionString(uri)) .serverApi(serverApi) .build();
try (MongoClient mongoClient = MongoClients.create(settings))Conjunto de réplicas
String uri = "mongodb://<replica set member>:<port>/?replicaSet=<replica set name>";
try (MongoClient mongoClient = MongoClients.create(uri))Cluster fragmentado
Para se conectar a um cluster fragmentado, especifique a instância mongos ou instâncias para o método MongoClients.create() . Para saber mais sobre clusters sharded, consulte Sharding no manual do servidor MongoDB.
Você pode se conectar a uma única instância do mongos das seguintes maneiras:
Especifique o nome do host e a porta em uma string de conexão, conforme mostrado no código a seguir:
MongoClient mongoClient = MongoClients.create( "mongodb://<hostname>:<port>" );Exclua a string de conexão se o
mongosestiver sendo executado emlocalhost:27017, conforme mostrado no seguinte código:MongoClient mongoClient = MongoClients.create();
Você pode se conectar a múltiplas instâncias do mongos das seguintes maneiras:
Especifique a string de conexão para conter seus nomes de host e portas, conforme mostrado no seguinte código:
MongoClient mongoClient = MongoClients.create("mongodb://<first hostname>:<first port>,<second hostname>:<second port>");Especifique uma lista dos objetos
ServerAddresscorrespondentes a cada instância, conforme mostrado no código a seguir:MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList( new ServerAddress("<first hostname>", <first port>), new ServerAddress("<second hostname", <second port>)))) .build());
Importante
O driver Java Reactive Streams não suporta objetos UnixServerAddress ou conexões de soquete de domínio. Para usar um soquete de domínio para se conectar, use o Driver Java Sync. Caso contrário, use um objeto ServerAddress para se conectar a partir do driver Java Reactive Streams.
Opções de conexão
Você pode especificar as configurações de conexão usando a string de conexão ou os tipos MongoClientSettings , ou ambos.
Por exemplo, você pode especificar TLS/SSL e configurações de autenticação na string de conexão, conforme mostrado no código a seguir:
MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");Você também pode usar uma instância MongoClientSettings para especificar TLS/SSL e o tipo MongoCredential para armazenar as informações de autenticação, conforme mostrado no código a seguir:
String user; // the usernameString database; // the name of the database in which the user is definedchar[] password; // the password as a character array// ...
MongoCredential credential = MongoCredential.createCredential(user, database, password);
MongoClientSettings settings = MongoClientSettings.builder() .credential(credential) .applyToSslSettings(builder -> builder.enabled(true)) .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("host1", 27017)))) .build();
MongoClient mongoClient = MongoClients.create(settings);Em alguns casos, talvez seja necessário combinar uma string de conexão com configuração programática, conforme mostrado no código a seguir:
ConnectionString connectionString = new ConnectionString("mongodb://host1:27107,host2:27017/?ssl=true");CommandListener myCommandListener = ...;MongoClientSettings settings = MongoClientSettings.builder() .addCommandListener(myCommandListener) .applyConnectionString(connectionString) .build();
MongoClient mongoClient = MongoClients.create(settings);