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

相关推荐
NineData30 分钟前
玖章算术NineData成功入选杭州市“新雏鹰”企业
运维·数据库·后端
程序员阿明1 小时前
spring boot3集成企业微信推送消息
java·spring boot·企业微信
SamDeepThinking1 小时前
用工厂模式和模板方法统一封装所有第三方的Access Token
java·后端·架构
CodeSheep1 小时前
DeepSeek的最新招人标准,太讽刺了。
前端·后端·程序员
huipeng9261 小时前
GateWay使用详解
java·spring boot·spring cloud·微服务·gateway
夏沫的梦1 小时前
DeepSeek V4-Vllm部署:高效长上下文推理的实现
人工智能·后端
blasit1 小时前
Qt C++ http服务器安全登录token生成管理
c++·后端·qt
golang学习记1 小时前
Go 字符串优化:从“能跑就行”到“快到编译器都追不上我”
后端
AskHarries1 小时前
我把域名卖了,顺手换了个新域名,然后站就没了
后端
用户962377954481 小时前
原理分析 | Controller —— SpringBoot 内存马
javascript·后端