Me enfrento a un problema relacionado con la tenencia múltiple de MongoDB. Tengo dos bases de datos mongoDB diferentes (db1 y db2). Ambos tienen credenciales diferentes.
credenciales db1 :
nombre de usuario: administrador
contraseña: contraseña
credenciales de db2 :
nombre de usuario: admin1
contraseña: passwd1
Necesito cambiar de una base de datos a otra en tiempo de ejecución. He conectado automáticamente mongoTemplate con credenciales de db1, pero ahora no puedo actualizar la plantilla con credenciales de db2. es posible? Si es así, ¿cómo? De lo contrario, dígame alguna otra forma de cambiar las bases de datos en tiempo de ejecución con diferentes credenciales.
Tenga en cuenta que conozco "SimpleMongoDbFactory". Uno puede extender "SimpleMongoDbFactory" y puede anular el método "getDb" y pasar el dbName requerido en super.getDb("dbName") para multiusuario. Pero esto no funciona con dos bases de datos con credenciales diferentes.
¿Qué sucede si crea una MongoCredential para cada base de datos y la pasa a un MongoClient que pasa a su SimpleMongoDbFactory ?
MongoCredential credential1 = MongoCredential.createCredential("admin", db1, "password"); MongoCredential credential2 = MongoCredential.createCredential("admin1", db2, "password1"); MongoClient mongoClient = new MongoClient(new ServerAddress(), Arrays.asList(credential1, credential2));Cree instancias independientes de MongoTemplate, cada una con sus propias credenciales y seleccione la adecuada en tiempo de ejecución.
Cada conexión se establece utilizando las credenciales, por lo que si las cambia en una conexión existente, esencialmente está destruyendo la conexión y creando una nueva y no estaría aprovechando la agrupación.