mongodb - 不推荐使用带有 mongoDB 副本集“MongoClient”的 java API
问题描述
我正在使用 java API 连接到具有副本集的 mongodb,例如
ServerAddress serverAddress1 = new ServerAddress("10.28.136.83",37000);
ServerAddress serverAddress2 = new ServerAddress("10.28.136.84",37000);
ServerAddress serverAddress3 = new ServerAddress("10.28.136.85",37000);
addressLists.add(serverAddress1);
addressLists.add(serverAddress2);
addressLists.add(serverAddress3);
credentials = MongoCredential.createScramSha1Credential("root", "admin", "root".toCharArray());
credentialsLists.add(credentials);
mongoClient = new MongoClient(addressLists, credentialsLists);
它有效,但MongoClient
表明它已被弃用。
/** @deprecated */
@Deprecated
public MongoClient(ServerAddress addr, List<MongoCredential> credentialsList) {
this(addr, credentialsList, MongoClientOptions.builder().build());
}
我想问一下连接到 mongodb 副本集的最新方法是什么。或任何更好的解决方案
解决方案
我同意@dnickless 的回答,但要确定:在您的情况下,您将ServerAddress列表(因为这是一个副本集)和MongoCredential列表传递给 mongo 的 ctor 。所以根据文档(3.7版),你应该使用一个接受相同服务器列表的ctor,但只有一个MongoCredential,(加上添加MongoOptions ...)
这就是你使用的:
@Deprecated
public MongoClient(List<ServerAddress> seeds,
List<MongoCredential> credentialsList)
Deprecated. Prefer MongoClient(List, MongoCredential, MongoClientOptions)
所以这是你需要的:
public MongoClient(List<ServerAddress> seeds,
MongoCredential credential,
MongoClientOptions options)
其中 credential - 用于验证所有连接的凭据
推荐阅读
- phpstorm - 从 PhpStorm 自动完成中隐藏某些类/子目录
- python - 如何在python中将大小设置为texture_size
- laravel-5 - 使用 Laravel eloquent 获取匹配月份和年份的记录
- amazon-web-services - 为什么“除非您使用直写,否则 TTL(生存时间)通常不是一个坏主意?”
- gitlab-ci - 如何重用来自另一个 repo 的 CI/CD 管道,但添加一个额外的工作?
- c++ - 为 C 程序员阐明 C++ 中的嵌套类回调函数
- c - 如何根据以下代码将 argv[2] 定义为列表,并且可以在运行时调用?
- swift - textFieldDidEndEditing 没有在 swift 中调用
- javascript - Facebook 评论插件仅显示在重新加载页面 reactjs
- spring-boot - 带有 GraalVM 原生镜像的 Spring AOP