使用 Spring-Boot 的分布式事务回滚
Distributed transaction rollback with Spring-Boot
我正在使用 Spring-Boot 学习分布式事务回滚。
我将 spring-boot 2.2 与 JPA 和 H2 数据库一起使用。
在我的示例中,我有三个微服务,它们 运行 在不同的端口上,具有自己的 H2 数据库。
微服务A --- http://localhost:2222/savePersonBasicDetails
微服务 B --- http://localhost:3333/savePersonAddress
微服务 C --- http://localhost:4444/savePersonHobbies
从微服务 A 中,我将获得 Person_Id,我会将其连同它们各自的数据发送到其余两个微服务。如果任何微服务失败,那么我想回滚整个事务。
示例:
保存(PersonVO personVO){
Integer personId = microserviceA.savePersonBasicDetails(personVO);
microserviceB.savePersonAddress(personId, personVO);
microserviceC.savePersonHobbies(personId, personVO);//If it fails in microserviceC,
//then the complete transaction should be rolled back.
}
我尝试在 save() 方法上使用 @Transactional(rollbackFor = Exception.class),但事务没有回滚。
请指教
您在混淆这些术语。分布式事务是与 RDBMS 相关的术语,而不是与 Web 服务相关的术语。有一个 web 服务标准用于与 soap web 服务相关的 web 服务 WS-TRANSACTION 上的交易。但是这个标准基本上没有被使用。
Web服务上下文中常用的术语是事务补偿,您可以搜索它。一种非常常见的补偿模式是 Try Cancel Confirm 模式,也有不同的方法。
如果您坚持使用分布式事务,请查看此 link:
https://www.atomikos.com/Blog/TransactionalRESTMicroservicesWithAtomikos
我正在使用 Spring-Boot 学习分布式事务回滚。 我将 spring-boot 2.2 与 JPA 和 H2 数据库一起使用。 在我的示例中,我有三个微服务,它们 运行 在不同的端口上,具有自己的 H2 数据库。
微服务A --- http://localhost:2222/savePersonBasicDetails
微服务 B --- http://localhost:3333/savePersonAddress
微服务 C --- http://localhost:4444/savePersonHobbies
从微服务 A 中,我将获得 Person_Id,我会将其连同它们各自的数据发送到其余两个微服务。如果任何微服务失败,那么我想回滚整个事务。
示例:
保存(PersonVO personVO){
Integer personId = microserviceA.savePersonBasicDetails(personVO);
microserviceB.savePersonAddress(personId, personVO);
microserviceC.savePersonHobbies(personId, personVO);//If it fails in microserviceC,
//then the complete transaction should be rolled back.
}
我尝试在 save() 方法上使用 @Transactional(rollbackFor = Exception.class),但事务没有回滚。
请指教
您在混淆这些术语。分布式事务是与 RDBMS 相关的术语,而不是与 Web 服务相关的术语。有一个 web 服务标准用于与 soap web 服务相关的 web 服务 WS-TRANSACTION 上的交易。但是这个标准基本上没有被使用。
Web服务上下文中常用的术语是事务补偿,您可以搜索它。一种非常常见的补偿模式是 Try Cancel Confirm 模式,也有不同的方法。
如果您坚持使用分布式事务,请查看此 link: https://www.atomikos.com/Blog/TransactionalRESTMicroservicesWithAtomikos