详解Java 连接MongoDB集群的几种方式
先决条件
先运行mongodb肯定是必须的,然后导入以下包:
importcom.mongodb.MongoClient; importcom.mongodb.MongoClientURI; importcom.mongodb.ServerAddress; importcom.mongodb.MongoCredential; importcom.mongodb.MongoClientOptions;
MongoClient
MongoClient()实例表示到数据库的连接池;你将只需要MongoClient类的一个实例,即使有多个线程也是一样。
重要:
通常,您只能为给定的MongoDB部署(例如独立,副本集或分片群集)创建一个MongoClient实例,并在您的应用程序中使用它。但是,如果您创建了多个实例:
- 所有资源使用限制(例如,最大连接等)适用于每个MongoClient实例。
- 要关闭一个实例,调用MongoClient.close()来清理资源。
连接到一个独立的MongoDB实例
以下几种方法:
1.
MongoClientmongoClient=newMongoClient("host1",27017);
2.YoucanspecifytheMongoClientURIconnectionstring.
MongoClientmongoClient=newMongoClient(newMongoClientURI("mongodb://host1:27017"));
连接到副本集
MongoDB将自动发现主要和副本。
YoucanspecifythemembersusingtheMongoClientURIconnectionstring:
指定两个副本集:
MongoClientmongoClient=newMongoClient(newMongoClientURI("mongodb://host1:27017,host2:27017,host3:27017"));
至少有一个副本集和副本集选项的成员:
MongoClientmongoClient=newMongoClient(newMongoClientURI("mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet"));
你可以使用ServerAddress指定副本集中的所有成员.
MongoClientmongoClient=newMongoClient( Arrays.asList(newServerAddress("host1",27017), newServerAddress("host2",27017), newServerAddress("host3",27017)));
连接到分片集群
要连接到分片群集,请将mongos实例或多个实例指定给MongoClient构造函数。
连接到一个mongos实例:
MongoClientmongoClient=newMongoClient("localhost",27017);
连接多个mongos实例:
MongoClientmongoClient=newMongoClient(newMongoClientURI("mongodb://host1:27017,host2:27017")); MongoClientmongoClient=newMongoClient( Arrays.asList(newServerAddress("host1",27017), newServerAddress("host2",27017)));
连接选项
您可以使用MongoClientURI或MongoClientOptions或两者来指定连接设置。
例如,您可以在MongoClientURI连接字符串中指定TLS/SSL和身份验证设置:
MongoClientURIuri=newMongoClientURI("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true"); MongoClientmongoClient=newMongoClient(uri);
您还可以使用MongoClientOptions来指定TLS/SSL和MongoCredential的认证信息:
Stringuser;//theusername Stringdatabase;//thenameofthedatabaseinwhichtheuserisdefined char[]password;//thepasswordasacharacterarray //... MongoCredentialcredential=MongoCredential.createCredential(user,database,password); MongoClientOptionsoptions=MongoClientOptions.builder().sslEnabled(true).build(); MongoClientmongoClient=newMongoClient(newServerAddress("host1",27017), Arrays.asList(credential), options);
这里只是官方给的简单演示连接,不可直接用于生产环境,比如:这里边没有配置读写关注,读取偏好,连接池配置等都是默认的.而这些默认值直接用于生产环境肯定是不行的.
至于生产环境怎么配置,要根据业务情况来实际分析,我在后边会提供一个参考.
生产环境配置见:mongodb连接配置实践
参考官方文档:https://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。