【问题标题】:Sessions are not supported by the MongoDB cluster to which this client is connected-springboot-mongodb-transactions此客户端所连接的 MongoDB 集群不支持会话-springboot-mongodb-transactions
【发布时间】:2019-11-06 02:47:51
【问题描述】:

我需要使用 spring mongotemplate 事务。 除非满足条件,否则将不得不手动回滚事务。 我得到了例外 com.mongodb.MongoClientException:此客户端连接到的 MongoDB 集群不支持会话。 如何使用 Spring mongodb 事务。 请帮帮我。

@Autowired
MongoTransactionManager mongoTransactionManager;

@Autowired
TestDao testDao;

@Transactional
public void testMethod() {
    int temp = 0;
    try {
        testDao.saveDatainTempTable();
        testDao.saveMongoData();
        if (temp == 0) {
            System.out.println("=========================");
            TransactionInterceptor.currentTransactionStatus().setRollbackOnly();
            mongoTransactionManager.rollback(TransactionInterceptor.currentTransactionStatus());
        }
    } catch (Exception e) {

    }

}

@Configuration
public class MongoTransactionConfig extends AbstractMongoConfiguration {

    @Bean
    MongoTransactionManager transactionManager(MongoDbFactory dbFactory) {
        return new MongoTransactionManager(dbFactory);
    }

    @Override
    protected String getDatabaseName() {
        return "test";
    }

    @Override
    public MongoClient mongoClient() {
        return new MongoClient("127.0.0.1", 27017);
    }
}

【问题讨论】:

  • 考虑将服务器端 Mongo 客户端更新为支持会话的版本。
  • 我正在使用仅支持会话的更新版本 mongo v4.0.9。但我仍然遇到异常。我不明白我哪里出错了
  • 我在使用 monogdb server 4.0.9 时遇到了类似的问题
  • @naaz 如果您找到任何解决方案,请告诉我
  • 有人告诉我,在我的情况下它不适用于单个实例

标签: mongodb spring-boot transactions mongotemplate


【解决方案1】:
  • 在 Linux 上,包含默认的 /etc/mongod.conf 配置文件 使用包管理器安装 MongoDB 时。

  • 在 Windows 上,一个 默认的/bin/mongod.cfg 配置文件是 在安装过程中包含

  • 在 macOS 上,包含默认的 /usr/local/etc/mongod.conf 配置文件 从 MongoDB 的官方 Homebrew tap 安装时。

添加以下配置

replication:
   oplogSizeMB: 128
   replSetName: "rs0"
   enableMajorityReadConcern: true

sudo service mongod restart;

蒙哥;

rs.initiate({
      _id: "rs0",
      version: 1,
      members: [
         { _id: 0, host : "localhost:27017" }
      ]
   }
)

检查要启用的配置

rs.conf()

我们可以使用连接URL作为

mongodb://localhost/default?ssl=false&replicaSet=rs0&readPreference=primary

文档:config-optionssingle-instance-replication

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2014-03-17
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多