spring - 如何在 Spring Boot 中为 MongoDB 4.2 Transaction 添加配置?
问题描述
我为我的项目中的交易添加了代码,但它返回以下错误。
错误:此客户端连接到的 mongodb 集群不支持会话
我做了一些研究,发现我们无法在独立服务器中实现 mongo db 事务,有没有办法在独立服务器中执行?
解决方案
副本集肯定是问题的解决方案
根据网上的各种文件,做 3 个节点的副本不是强制性的。
解决方案 1(用于独立设置)
对于独立的 mongo 安装,您可以跳过配置 2nd 或 3rd 节点,如官方 mongo 文档中所述
你需要在配置中设置一个replSetName
replication:
oplogSizeMB: <int>
replSetName: <string>
enableMajorityReadConcern: <boolean>
然后运行详细信息在这里
rs.initiate()
在此之后,连接字符串如下所示:-
mongodb://localhost:27017/<database_name>?replicaSet=<replSet_Name>
上面需要更换的键:-
database_name = 数据库名称
replSet_Name = 您在上述配置中设置的副本集的名称
解决方案 2(仅适用于基于 docker 的要求)
具有单节点副本集作为开发环境主节点的示例 Docker 映像如下:-
我在 docker hub 上托管了 docker 映像
docker pull krnbr/mongo:latest
同一个Dockerfile的内容如下:-
FROM mongo
RUN echo "rs.initiate({'_id':'rs0','members':[{'_id':0,'host':'127.0.0.1:27017'}]});" > /docker-entrypoint-initdb.d/replica-init.js
RUN cat /docker-entrypoint-initdb.d/replica-init.js
CMD [ "--bind_ip_all", "--replSet", "rs0" ]
Docker 运行命令(替换为您自己构建的映像名称或使用上面共享的,即krnbr/mongo):-
无音量
docker run -d --name mongo -p 27017:27017 <Image Name> mongod --replSet rs0 --port 27017
有音量
docker run -d --name mongo -p 27017:27017 -v ~/.mongodb:/data/db <Image Name> mongod --replSet rs0 --port 27017
用于支持任何 ip 的绑定
docker run -d --name mongo -p 27017:27017 -v ~/.mongodb:/data/db <Image Name> mongod --bind_ip_all --replSet rs0 --port 27017
推荐阅读
- nginx - Nginx 作为 TCP 转发代理
- javascript - JSON输出未正确显示,javascript
- vue.js - 如何使用 vuejs 使 axios 的 API 请求可重用?
- java - 如何在 Java 中加快数据插入 MySQL 的速度
- python - 索引越界错误:Python
- javascript - 当被 html 标签分割时,使用 AngularJS 突出显示搜索到的文本
- sonarqube - 使用将 Visual Studio 项目绑定到 sonarqube 服务器
- tfs - 限制用户可以看到的内容
- javascript - 对特定列进行排序
- excel - 如何从文本文件中提取字符串并使用 Powershell 将它们复制到 Excel 工作表