【问题标题】:Amazon Document DB: How to Implement multi-document transactionsAmazon Document DB:如何实现多文档事务
【发布时间】:2020-10-25 05:40:27
【问题描述】:

当使用 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 中也是如此。

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

文档:

Document-DB

Mongo DB

【问题讨论】:

    标签: mongodb transactions replication distributed-transactions aws-documentdb


    【解决方案1】:

    您的first link 说:

    Amazon DocumentDB 目前不支持多语句交易。

    关于

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

    DocumentDB 不是 MongoDB。

    【讨论】:

    • 谢谢,是的,Document DB 支持 Mongo DB 3.6 Api。
    • 准确的说法是:Document DB 实现了 MongoDB 3.6 提供的一些功能。
    【解决方案2】:

    2020 年 11 月,Amazon DocumentDB 4.0 添加了对事务的支持。

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多