springboot MongoDB 主从 多数据源

上一篇,我写了关于用一个map管理mongodb多个数据源(每个数据源,只有单例)的内容。

springboot mongodb 配置多数据源

临到部署到阿里云的测试环境,发现还需要考虑一下主从的问题,阿里云买的数据库,不是说让你无感知的,而是给了2个url,一个主一个从的,这个只能我们在java代码里初始化实例的时候,配置进去。

庆幸的是,实例化MongoClient的时候,初始化方法里,有考虑集群的这种情况。

所以从单例改主从,只需要把原来的以String connectionString参数的构造方法,

java 复制代码
MongoClient client = MongoClients.create(String类型的mongoUrl地址);

改为使用MongoClientSettings参数的构造方法,即可。

代码如下改动:

java 复制代码
//账号密码认证
MongoCredential credentia =
          MongoCredential.createScramSha1Credential(
              用户名, mongo权限验证库-默认是admin, 用户密码.toCharArray());
//将主从地址以数组的形式进行传入,第一个是主,除了第一个之外的是从库
List<ServerAddress> serverList = new ArrayList<>();
serverList.add(new ServerAddress(主域名, 主端口));
//serverList.add(new ServerAddress(从域名, 从端口));
MongoClientSettings settings =
          MongoClientSettings.builder()
              .applyToClusterSettings(builder -> builder.hosts(serverList).这里还可以设置集群的各种属性,自己决定吧)
              .credential(credentia)
              .build();  
MongoClient client = MongoClients.create(settings);

然后使用MongoTemplate的下列初始化方法,即可得到指定主从的template

相关推荐
大学生资源网7 分钟前
基于springboot的智能家居系统的设计与实现(源码+文档)
java·spring boot·后端·毕业设计·源码
计算机毕设VX:Fegn089526 分钟前
计算机毕业设计|基于springboot + vue校园招聘系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
自由生长202436 分钟前
windows上写C++的编译器选择和环境
后端
华仔啊38 分钟前
都在用 Java8 或 Java17,那 Java9 到 16 呢?他们真的没用吗?
java·后端
WizLC39 分钟前
【后端】面向对象编程是什么(附加几个通用小实例项目)
java·服务器·后端·python·设计语言
风象南42 分钟前
SpringBoot 该不该用统一包装类
后端
muyouking1144 分钟前
Rust Nightly 切换指南:解锁前沿特性的钥匙
开发语言·后端·rust
武子康1 小时前
Java-211 Spring Boot 2.4.1 整合 RabbitMQ 实战:DirectExchange + @RabbitListener 全流程
java·spring boot·分布式·消息队列·rabbitmq·rocketmq·java-rabbitmq
没有bug.的程序员1 小时前
Ribbon vs LoadBalancer 深度解析
jvm·后端·spring cloud·微服务·ribbon·架构·gc调优
毕设源码-赖学姐1 小时前
【开题答辩全过程】以 果树的生长信息管理系统为例,包含答辩的问题和答案
java·spring boot