该客户端连接到的MongoDB集群不支持会话-springboot-mongodb-transactions

时间:2019-06-24 09:57:48

标签: mongodb spring-boot transactions mongotemplate

我需要处理春季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);
    }
}

1 个答案:

答案 0 :(得分:0)

  • 在Linux上,包含一个默认的/etc/mongod.conf配置文件 使用程序包管理器安装MongoDB时。

  • 在Windows上, 默认的<安装目录> /bin/mongod.cfg配置文件为 安装过程中包含的

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

添加以下配置

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

sudo服务mongod重新启动;

mongo;

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

检查以启用配置

rs.conf()

我们可以将连接URL 用作

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

docs:config-options single-instance-replication