经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MongoDB » 查看文章
Java 连接MongoDB集群的几种方式
来源:cnblogs  作者:超超boy  时间:2018/12/7 9:20:41  对本文有异议

先决条件

先运行mongodb肯定是必须的,然后导入以下包:

  1. import com.mongodb.MongoClient;
  2. import com.mongodb.MongoClientURI;
  3. import com.mongodb.ServerAddress;
  4. import com.mongodb.MongoCredential;
  5. import com.mongodb.MongoClientOptions;

MongoClient

MongoClient()实例表示到数据库的连接池; 你将只需要MongoClient类的一个实例,即使有多个线程也是一样。

重要:

通常,您只能为给定的MongoDB部署(例如独立,副本集或分片群集)创建一个MongoClient实例,并在您的应用程序中使用它。 但是,如果您创建了多个实例:

  • 所有资源使用限制(例如,最大连接等)适用于每个MongoClient实例。
  • 要关闭一个实例,调用MongoClient.close() 来清理资源。

连接到一个独立的MongoDB实例

以下几种方法:

1.

  1. MongoClient mongoClient = new MongoClient( "host1" , 27017 );?

2. You can specify the MongoClientURI connection string.

  1. MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://host1:27017"));

连接到副本集

MongoDB将自动发现主要和副本。

You can specify the members using the MongoClientURI connection string:

指定两个副本集:

  1. MongoClient mongoClient = new MongoClient( new MongoClientURI("mongodb://host1:27017,host2:27017,host3:27017"));?

至少有一个副本集和副本集选项的成员:

MongoClient mongoClient = new MongoClient( new MongoClientURI( "mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet"));

你可以使用ServerAddress指定副本集中的所有成员. 

  1. MongoClient mongoClient = new MongoClient(
  2. Arrays.asList(new ServerAddress("host1", 27017),
  3. new ServerAddress("host2", 27017),
  4. new ServerAddress("host3", 27017)));

连接到分片集群

要连接到分片群集,请将mongos实例或多个实例指定给MongoClient构造函数。

连接到一个mongos实例:

MongoClient mongoClient = new MongoClient( "localhost" , 27017 );

连接多个 mongos 实例:

MongoClient mongoClient = new MongoClient( new MongoClientURI("mongodb://host1:27017,host2:27017"));

  1. MongoClient mongoClient = new MongoClient(
  2. Arrays.asList(new ServerAddress("host1", 27017),
  3. new ServerAddress("host2", 27017)));

连接选项

您可以使用MongoClientURIMongoClientOptions或两者来指定连接设置。

例如,您可以在MongoClientURI连接字符串中指定 TLS/SSL和身份验证设置:

  1. MongoClientURI uri = new MongoClientURI("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
  2. MongoClient mongoClient = new MongoClient(uri);

您还可以使用MongoClientOptions来指定 TLS/SSL 和MongoCredential的认证信息:

  1. String user; // the user name
  2. String database; // the name of the database in which the user is defined
  3. char[] password; // the password as a character array
  4. // ...
  5. MongoCredential credential = MongoCredential.createCredential(user, database, password);
  6. MongoClientOptions options = MongoClientOptions.builder().sslEnabled(true).build();
  7. MongoClient mongoClient = new MongoClient(new ServerAddress("host1", 27017),
  8. Arrays.asList(credential),
  9. options);

这里只是官方给的简单演示连接, 不可直接用于生产环境, 比如: 这里边没有配置读写关注, 读取偏好, 连接池配置等都是默认的. 而这些默认值直接用于生产环境肯定是不行的.

至于生产环境怎么配置, 要根据业务情况来实际分析, 我在后边会提供一个参考.

生产环境配置见: mongodb连接配置实践

 

 

参考官方文档:

https://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/ 

转发清注明出处: https://www.cnblogs.com/jycboy/p/10076859.html 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号