Java 连接MongoDB集群的几种方式
先决条件
先运行mongodb肯定是必须的,然后导入以下包:
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.ServerAddress;
import com.mongodb.MongoCredential;
import com.mongodb.MongoClientOptions;
MongoClient
MongoClient()实例表示到数据库的连接池; 你将只需要MongoClient类的一个实例,即使有多个线程也是一样。
重要:
通常,您只能为给定的MongoDB部署(例如独立,副本集或分片群集)创建一个MongoClient实例,并在您的应用程序中使用它。 但是,如果您创建了多个实例:
- 所有资源使用限制(例如,最大连接等)适用于每个MongoClient实例。
- 要关闭一个实例,调用MongoClient.close() 来清理资源。
连接到一个独立的MongoDB实例
以下几种方法:
1.
MongoClient mongoClient = new MongoClient( "host1" , 27017 );
2. You can specify the MongoClientURI
connection string.
MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://host1:27017"));
连接到副本集
MongoDB将自动发现主要和副本。
You can specify the members using the MongoClientURI
connection string:
指定两个副本集:
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指定副本集中的所有成员.
MongoClient mongoClient = new MongoClient(
Arrays.asList(new ServerAddress("host1", 27017),
new ServerAddress("host2", 27017),
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"));
MongoClient mongoClient = new MongoClient(
Arrays.asList(new ServerAddress("host1", 27017),
new ServerAddress("host2", 27017)));
连接选项
您可以使用MongoClientURI
或MongoClientOptions
或两者来指定连接设置。
例如,您可以在MongoClientURI
连接字符串中指定 TLS/SSL
和身份验证设置:
MongoClientURI uri = new MongoClientURI("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
MongoClient mongoClient = new MongoClient(uri);
您还可以使用MongoClientOptions
来指定 TLS/SSL
和MongoCredential
的认证信息:
String user; // the user name
String database; // the name of the database in which the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createCredential(user, database, password);
MongoClientOptions options = MongoClientOptions.builder().sslEnabled(true).build();
MongoClient mongoClient = new MongoClient(new ServerAddress("host1", 27017),
Arrays.asList(credential),
options);
这里只是官方给的简单演示连接, 不可直接用于生产环境, 比如: 这里边没有配置读写关注, 读取偏好, 连接池配置等都是默认的. 而这些默认值直接用于生产环境肯定是不行的.
至于生产环境怎么配置, 要根据业务情况来实际分析, 我在后边会提供一个参考.
参考官方文档:
https://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/
转发清注明出处: https://www.cnblogs.com/jycboy/p/10076859.html
Java 连接MongoDB集群的几种方式的更多相关文章
- Spring boot连接MongoDB集群
主要问题是:MongoDB集群分为复制集(replicaSet)与分片集(shardingSet),那么如何去连接这两种集群: 参考官方文档,我使用了最通用的方法:通过构造connection str ...
- Java连接Elasticsearch集群
package cn.test; import java.net.InetAddress; import java.net.UnknownHostException; import org.elast ...
- Java连接redis集群操作存储、删除以及获取值
pom文件添加: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> &l ...
- ElasticSearch(四):使用Java连接ElasticSearch集群
public class ESIndexMapping { private static String host="192.168.56.3"; // 服务器地址 private ...
- java 连接 redis集群时报错:Could not get a resource from the pool
由于弄这个的时候浪费了太多的时间,所以才记录下这个错,给大伙参考下 检查了一下,配置啥的都没问题的,但在redis集群机器上就可以,错误如下: Exception in thread "ma ...
- redis集群的三种方式
Redis三种集群方式:主从复制,哨兵模式,Cluster集群. 主从复制 基本原理 当新建立一个从服务器时,从服务器将向主服务器发送SYNC命令,接收到SYNC命令后的主服务器会进行一次BGSAVE ...
- redis安装集群的2种方式
redis主从只是数据的备份,当主宕机后不会自动切换从为主,需要手动切换从为主. 哨兵就可以自动切换从为主, 当主数据库遇到异常中断服务后,开发者可以通过手动的方式选择一个从数据库来升格为主数据库,以 ...
- Hadoop 集群的三种方式
1,Local(Standalone) Mode 单机模式 $ mkdir input $ cp etc/hadoop/*.xml input $ bin/hadoop jar share/hadoo ...
- python连接mongodb集群
一 安装模块pymongo pip3 install pymongo 二 创建一个MongoClient conn=MongoClient('mongodb://cbi:pass@ip1:20000, ...
随机推荐
- windows下编译php7图形库php_ui.dll
CSDN博客 具有图形化编程才有意思,这几天看到了php ui 图形扩展,只是现在只能下载php 7.1的 本次教程编译php7.2.6的 php ui 要是linux下编译起来比较简单 但是 win ...
- Codeforces 1118F1 Tree Cutting (Easy Version) (简单树形DP)
<题目链接> 题目大意: 给定一棵树,树上的点有0,1,2三中情况,0代表该点无色.现在需要你将这棵树割掉一些边,使得割掉每条边分割成的两部分均最多只含有一种颜色的点,即分割后的两部分不能 ...
- 最近24小时记录:虚拟机与Wireshark 2.0
最近24小时记录:虚拟机与Wireshark 2.0 (1)虚拟机如果NAT模式而无法联网,需要检查实体机中VMware的NAT服务是否开启. (2)从Wireshark 2.0版本开始,Wire ...
- codeforces723----C. Polycarp at the Radio
//AC代码...表示很晕 #include <iostream> using namespace std; ],b[]; int main() { int n,m,cnt; cin &g ...
- Codeforces Round #517 (Div. 2)
A #include<queue> #include<cstdio> #include<cstring> #include<algorithm> #de ...
- RbbitMQ 的 python 实现方法
RbbitMQ(消息队列) #简单模式 服务端 import pika #连接 connection = pika.BlockingConnection(pika.ConnectionParamete ...
- JDK 1.8 新特性
default 函数式接口 待总结
- js计算总页数
前端js取余是a%b 取除数parseInt(a / b) /** * 总页数@param(总条数,每页总条数) */ function pageTotal(rowCount, pageSize) { ...
- Mybatis 传递多个参数
Mybatis提供了4种传递多个参数的方法: 1 Map sql语句 接口 调用方法 这个方法虽然简单易用,但是存在一个弊端:Map存储的元素是键值对,可读性不好. 2 注解 使用MyBatis的参数 ...
- 数据结构 Sunday算法
Sunday算法是Daniel M.Sunday于1990年提出的字符串模式匹配算法.相对比较KMP和BM算法而言,简单了许多. Sunday算法的思想类似于BM算法中的坏字符思想,有点像其删减版.差 ...