MongoDB 多租户 (Java):如何使用 MongoClient 在 运行 时切换具有不同数据库凭据的 MongoDB 数据库?
MongoDB multitenancy (Java): How to switch MongoDB databases, with different DB credentials, at run-time, using MongoClient?
我遇到了有关 MongoDB 多租户的问题。我有两个不同的 mongoDB 数据库(db1 和 db2)。它们都有不同的凭据。
db1 凭据:
用户名:admin
密码:passwd
db2 凭证:
用户名:admin1
密码:passwd1
我需要在 运行 时从一个数据库切换到另一个数据库。我已使用 db1 凭据自动装配 mongoTemplate,但现在我无法使用 db2 凭据更新模板。这可能吗?如果是,如何?如果没有,请告诉我在 运行 时使用不同凭据切换数据库的任何其他方法。
请注意,我知道 "SimpleMongoDbFactory"。可以扩展 "SimpleMongoDbFactory" 并覆盖 "getDb" 方法并在 super.getDb("dbName") 中传递所需的 dbName 以实现多租户。但是,这不适用于具有不同凭据的两个数据库。
如果您为每个数据库创建一个 MongoCredential
并将它们传递给一个 MongoClient
,然后再传递给您的 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));
创建独立的 MongoTemplate 实例,每个实例都有自己的凭据,select 在运行时适当。
每个连接都是使用凭据建立的,因此如果您在现有连接上更改它们,您实际上是在破坏连接并创建一个新连接,并且不会利用池。
我遇到了有关 MongoDB 多租户的问题。我有两个不同的 mongoDB 数据库(db1 和 db2)。它们都有不同的凭据。
db1 凭据:
用户名:admin
密码:passwd
db2 凭证:
用户名:admin1
密码:passwd1
我需要在 运行 时从一个数据库切换到另一个数据库。我已使用 db1 凭据自动装配 mongoTemplate,但现在我无法使用 db2 凭据更新模板。这可能吗?如果是,如何?如果没有,请告诉我在 运行 时使用不同凭据切换数据库的任何其他方法。
请注意,我知道 "SimpleMongoDbFactory"。可以扩展 "SimpleMongoDbFactory" 并覆盖 "getDb" 方法并在 super.getDb("dbName") 中传递所需的 dbName 以实现多租户。但是,这不适用于具有不同凭据的两个数据库。
如果您为每个数据库创建一个 MongoCredential
并将它们传递给一个 MongoClient
,然后再传递给您的 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));
创建独立的 MongoTemplate 实例,每个实例都有自己的凭据,select 在运行时适当。
每个连接都是使用凭据建立的,因此如果您在现有连接上更改它们,您实际上是在破坏连接并创建一个新连接,并且不会利用池。