Overview
Esta página contiene ejemplos de código que muestran cómo conectar tu aplicación Java Reactive Streams a MongoDB con diversas configuraciones.
Tip
Para obtener más información sobre las opciones de conexión de esta página, consulta el enlace proporcionado en cada sección.
Para usar un ejemplo de conexión de esta página, copia el ejemplo de código en el
aplicación de muestra o su propia aplicación. Asegúrese de reemplazar todos los marcadores de posición en los ejemplos de código, como <Atlas
connection string>, con los valores relevantes para tu implementación de MongoDB.
Importante
Proyecto Reactor librería
Esta guía usa la librería Proyecto Reactor para consumir instancias Publisher devueltas por los métodos del driver Reactive Streams de Java. Para obtener más información sobre la biblioteca Project Reactor y cómo utilizarla, consulta Primeros pasos en la documentación de Reactor. Para obtener más información sobre cómo usamos los métodos de la librería Project Reactor en esta guía, consulte el Guía Guardar datos en MongoDB.
Puede utilizar la siguiente aplicación de muestra para probar los ejemplos de código en esta página. Para usar la aplicación de muestra, siga los siguientes pasos:
Crea un nuevo proyecto Java en tu IDE.
Instale el driver de Reactive Streams de Java en su proyecto Java.
Instale la librería Project Reactor en su proyecto Java.
Copia el siguiente código y pégalo en un nuevo archivo Java llamado
ConnectionApp.java.Copia un ejemplo de código de esta página y pégalo en las líneas especificadas del archivo.
1 import com.mongodb.ConnectionString; 2 import com.mongodb.MongoClientSettings; 3 import com.mongodb.ServerApi; 4 import com.mongodb.ServerApiVersion; 5 6 import org.bson.BsonDocument; 7 import org.bson.BsonInt64; 8 import org.bson.Document; 9 10 import com.mongodb.reactivestreams.client.MongoClient; 11 import com.mongodb.reactivestreams.client.MongoClients; 12 import com.mongodb.reactivestreams.client.MongoDatabase; 13 import org.bson.conversions.Bson; 14 import reactor.core.publisher.Mono; 15 16 class ConnectionApp { 17 public static void main(String[] args) { 18 //start example code here 19 20 //end example code here 21 { 22 Bson command = new BsonDocument("ping", new BsonInt64(1)); 23 MongoDatabase database = mongoClient.getDatabase("admin"); 24 Publisher<Document> MonoPublisher = database.runCommand(command); 25 26 Mono.from(MonoPublisher) 27 .doOnSuccess(x -> System.out.println("Pinged your deployment. You successfully connected to MongoDB!")) 28 .doOnError(err -> System.out.println("Error: " + err.getMessage())) 29 .block(); 30 31 //other application code 32 33 } 34 } 35 }
Conexión
Implementación local
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))
Set de réplicas
String uri = "mongodb://<replica set member>:<port>/?replicaSet=<replica set name>"; try (MongoClient mongoClient = MongoClients.create(uri))
Clúster fragmentado
Para conectarte a un clúster fragmentado, especifica la instancia o instancias mongos en el método MongoClients.create(). Para obtener más información sobre clústeres, consulte Particionado en el manual del Servidor.
Puedes conectarte a una sola instancia de mongos de las siguientes maneras:
Especifica el hostname y el puerto en una cadena de conexión, como se muestra en el siguiente código:
MongoClient mongoClient = MongoClients.create( "mongodb://<hostname>:<port>" ); Excluir la cadena de conexión si el
mongosse está ejecutando enlocalhost:27017, como se muestra en el siguiente código:MongoClient mongoClient = MongoClients.create();
Puedes conectarte a varias instancias de mongos de las siguientes maneras:
Specifique que la cadena de conexión contenga los nombres de host y los puertos, como se muestra en el siguiente código:
MongoClient mongoClient = MongoClients.create("mongodb://<first hostname>:<first port>,<second hostname>:<second port>"); Especifica una lista de los objetos
ServerAddresscorrespondientes a cada instancia, como se muestra en el siguiente código: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
El controlador de Reactive Streams de Java no admite objetos UnixServerAddress o conexiones de socket de dominio. Para usar un socket de dominio para conectarse, usa el Java Sync Driver. De lo contrario, utiliza un objeto ServerAddress para conectarte desde el controlador Java Reactive Streams.
Opciones de conexión
Puedes especificar la configuración de la conexión utilizando la cadena de conexión o los tipos MongoClientSettings, o ambos.
Por ejemplo, puedes especificar los ajustes de TLS/SSL y autenticación en la cadena de conexión, como se muestra en el siguiente código:
MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
También puedes utilizar una instancia de MongoClientSettings para especificar TLS/SSL y el tipo MongoCredential para almacenar la información de autenticación, como se muestra en el siguiente código:
String user; // the username String database; // the name of the database in which the user is defined char[] 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);
En algunos casos, es posible que necesites combinar una cadena de conexión con una configuración programática, como se muestra en el siguiente código:
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);