mongodb多租户(java):如何在运行时使用mongoclient切换具有不同db凭证的mongodb数据库?

kpbwa7wx  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(487)

我面临一个关于mongodb多租户的问题。我有两个不同的mongodb数据库(db1和db2)。它们都有不同的证书。
db1凭据:
用户名:admin
密码:passwd
db2凭据:
用户名:admin1
密码:passwd1
我需要在运行时从一个数据库切换到另一个数据库。我使用了带有db1凭据的autowiredmongotemplate,但是现在无法使用db2凭据更新模板。这可能吗?如果是,怎么做?如果没有,请告诉我运行时使用不同凭据切换数据库的其他方法。
注意,我知道“simplemongodbfactory”。可以扩展“simplemongodbfactory”,可以重写“getdb”方法,并在super.getdb(“dbname”)中传递多租户所需的dbname。但是,这不适用于具有不同凭据的两个数据库。

kqlmhetl

kqlmhetl1#

如果你创建一个 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));

fsi0uk1n

fsi0uk1n2#

创建独立的mongotemplate示例,每个示例都有自己的凭证,并在运行时选择适当的凭证。
每个连接都是使用凭据建立的,因此如果在现有连接上更改凭据,则实际上是在销毁连接并创建新连接,而不是利用池。

相关问题