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

相关推荐
MageGojo15 分钟前
天气 API 接入实战:基于 ApiZero 实现实时天气、分钟级降水和 15 天预报查询
java·后端·spring·api 接口接入·接口实战
Dr_eamboat1 小时前
SpringBoot策略模式+工厂模式实战解析
linux·spring boot·策略模式
☆cwlulu1 小时前
Linux系统调用与C库I/O的底层奥秘
java·spring boot·spring
pe7er1 小时前
软件设计不要“既要又要”
前端·后端·架构
柏舟飞流1 小时前
Spring Boot 深入实践指南:从入门到工程化落地
spring boot·后端·firefox
IT_陈寒2 小时前
Java Stream并行流的坑:我花了3小时才找到的线程安全问题
前端·人工智能·后端
橘子海全栈攻城狮2 小时前
【最新源码】鸟博士微信小程序 023
spring boot·后端·web安全·微信小程序·小程序
Hiter_John2 小时前
Golang的运算符
开发语言·后端·golang
皮皮林5512 小时前
Dubbo 的 SPI 和 JDK 的 SPI 有什么区别?
后端
金銀銅鐵3 小时前
用 Tkinter 实现一个罗马数字转整数的简单工具
后端·python