SpringData事务管理器支持MongoDB多数据库事务

SpringData事务管理器支持MongoDB多数据库事务,spring,mongodb,transactions,spring-data-mongodb,spring-transactions,Spring,Mongodb,Transactions,Spring Data Mongodb,Spring Transactions,我在一个Mongo集群(版本4.4)中有两个数据库。 其中一个数据库是数据的暂存区,即存储在那里的临时、浓缩、验证等数据。在某一点上,数据必须复制到永久数据库,并标记为在临时数据库中复制。我想在一个事务中执行这些操作 据介绍,使用mongo特定的代码应该很容易做到。 但是我的应用程序的其余部分是在SpringData之上编写的(来自spring-data-mongodb-3.0.2.RELEASE.jar的MongoTemplate)。所以我想在这种情况下也使用它 可以在Spring配置中定义事

我在一个Mongo集群(版本4.4)中有两个数据库。 其中一个数据库是数据的暂存区,即存储在那里的临时、浓缩、验证等数据。在某一点上,数据必须复制到永久数据库,并标记为在临时数据库中复制。我想在一个事务中执行这些操作

据介绍,使用mongo特定的代码应该很容易做到。 但是我的应用程序的其余部分是在SpringData之上编写的(来自spring-data-mongodb-3.0.2.RELEASE.jar的MongoTemplate)。所以我想在这种情况下也使用它

可以在Spring配置中定义事务管理器bean并使用它:

  @Bean
  MongoTransactionManager transactionManager(MongoDbFactory dbFactory) {
    return new MongoTransactionManager(dbFactory);
  }
但该bean将绑定到单个Mongo数据库(在dbFactory中指定),因此在实践中,事务将只包含与一个DB相关的操作(而不是两者)

我找到了一种方法来定义和传递两个PlatformTransactionManager作为参数。但据我所知,它将创建两个事务,并在前一个事务失败时回滚剩余的事务。 那不是我要找的

官方不提供可与MongoeMaplate一起使用的本机交叉db Mongo事务的任何信息

所以我的问题是:
有没有办法定义一个支持多个MongoDb数据库的事务管理器(并允许在一个事务中修改两个数据库中的数据)?实现这一点的一种可能方法是在处理代码之外建立事务(使用withTransaction driver helper),这将为您提供一个会话对象,并使您的所有处理代码都引用事务的会话。然后,您的处理代码只需要使用会话,但不需要担心事务,它可以与其他组件一起成为事务的一部分

不过,我不知道如何专门使用spring数据来实现这一点