首页 > 解决方案 > Amazon Document DB:如何实现多文档事务

问题描述

使用 mongo 模板在文档数据库集群中启动事务会话时。

public class DocDBService() {
@Autowired
MongoTemplate mongoTemplate;

@Autowired
MongoTransactionManager mongoTransactionManager;

public void writeAsTransaction() {
  mongoTemplate.setSessionSynchronization(SessionSynchronization.ALWAYS);
  TransactionTemplate transactionTemplate = new TransactionTemplate(mongoTransactionManager);
  transactionTemplate.execute(
      new TransactionCallbackWithoutResult() {
        @Override
        protected void doInTransactionWithoutResult(final TransactionStatus status) {
            mongoTemplate.save(new Document("abc", 1), "test");
            mongoTemplate.remove(new Document("abc", 1), "test");
        }
      }
  );
}
}

抛出错误

Sessions are not supported by the MongoDB cluster to which this client is connected

集群 URL确实启用了复制

mongodb://user:password@cluster-url/default?ssl=true& replicaSet=rs0 &readPreference=secondaryPreferred

复制配置:

rs0:PRIMARY> rs.conf()
{
    "_id" : "rs0",
    "configsvr" : false,
    "protocolVersion" : 1,
    "writeConcernMajorityJournalDefault" : true,
    "members" : [
        {
            "_id" : 0,
            "host" : "cluster.****.us-west-*.docdb.amazonaws.com:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "slaveDelay" : 0
        },
        {
            "_id" : 1,
            "host" : "cluster-1.****.us-west-*.docdb.amazonaws.com:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "slaveDelay" : 0
        },
        {
            "_id" : 2,
            "host" : "cluster-2.****.us-west-*.docdb.amazonaws.com:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "slaveDelay" : 0
        }
    ],
    "settings" : {
        "getLastErrorDefaults" : {
            "w" : "majority",
            "wtimeout" : 0
        }
    }
}

在具有单机复制的本地 Mongo DB 3.6 中也是如此。

有关如何克服这一点的任何信息都会有所帮助。提前致谢。

文件:

文档数据库

蒙哥数据库

标签: mongodbtransactionsreplicationdistributed-transactionsaws-documentdb

解决方案


您的第一个链接说:

Amazon DocumentDB 目前不支持多语句事务。

关于

在具有单机复制的本地 Mongo DB 3.6 中也是如此。

DocumentDB 不是 MongoDB。


推荐阅读