spring-boot-starter-jta-atomikos 实践
spring-boot-starter-jta-atomikos in practise
我正尝试在我的 spring 启动应用程序中使用 Atomikos 进行分布式事务处理。它将与两个数据库进行交互。
我找到了一个 example in which the author uses Atomicos. Starting with version 1.2 spring boot supports Atomicos。
我有几个问题:
- 如果应用程序具有 spring-boot-starter-jta-atomikos 依赖项,可以删除 example 配置的哪一部分?
- 当应用程序只对一个数据库执行操作时会发生什么?即我是否需要一些额外的东西来指定哪些交易应该分发,哪些是本地的,或者它会被自动检测到吗?在这种情况下,我想避免开销。
谢谢!
Spring Boot 将为您自动配置 JtaTransactionManager
并将其正确绑定到您的实体管理器或 JMS 消息侦听器(如果有)。查看 the documentation 了解更多详情。一种安全的开始方式是根本不编写任何配置,并通过属性或自定义配置查看您需要自定义的内容。
话虽这么说,Spring Boot 没有对多个数据库的自动配置支持。如果你想配置一个有两个数据库的项目,你必须自己做; this sample project 向您展示了如何使用 JPA 和本地事务管理器来做到这一点。根据您引用的示例,您可以使用 Atomikos 轻松地将它移植到 JTA。
您不能在运行时更改事务管理器(即基于您的 线程 仅使用一个数据库这一事实)。我猜想事务管理器本身对这种情况有优化,如果不需要的话,不是 运行 一个完整的 2PC。
我正尝试在我的 spring 启动应用程序中使用 Atomikos 进行分布式事务处理。它将与两个数据库进行交互。
我找到了一个 example in which the author uses Atomicos. Starting with version 1.2 spring boot supports Atomicos。
我有几个问题:
- 如果应用程序具有 spring-boot-starter-jta-atomikos 依赖项,可以删除 example 配置的哪一部分?
- 当应用程序只对一个数据库执行操作时会发生什么?即我是否需要一些额外的东西来指定哪些交易应该分发,哪些是本地的,或者它会被自动检测到吗?在这种情况下,我想避免开销。
谢谢!
Spring Boot 将为您自动配置 JtaTransactionManager
并将其正确绑定到您的实体管理器或 JMS 消息侦听器(如果有)。查看 the documentation 了解更多详情。一种安全的开始方式是根本不编写任何配置,并通过属性或自定义配置查看您需要自定义的内容。
话虽这么说,Spring Boot 没有对多个数据库的自动配置支持。如果你想配置一个有两个数据库的项目,你必须自己做; this sample project 向您展示了如何使用 JPA 和本地事务管理器来做到这一点。根据您引用的示例,您可以使用 Atomikos 轻松地将它移植到 JTA。
您不能在运行时更改事务管理器(即基于您的 线程 仅使用一个数据库这一事实)。我猜想事务管理器本身对这种情况有优化,如果不需要的话,不是 运行 一个完整的 2PC。