请问seata中,下列改成什么合适? Seata 默认使用 REQUIRED 传播行为,即如果当前方法已经存在一个全局事务上下文,则加入该事务,否则创建新的事务。
如果你想更改事务的传播行为,可以使用 @GlobalTransactional 注解的 propagation 属性。例如,假设你想把传播行为更改为 REQUIRES_NEW:
java @GlobalTransactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) public void yourMethod() { // 业务逻辑代码 } 在上面的示例中,通过将 propagation 属性设置为 Propagation.REQUIRES_NEW,该方法将始终创建一个新的事务。
常用的事务传播行为包括:
REQUIRED:如果当前方法已经存在一个事务上下文,则加入该事务;否则创建新的事务。 REQUIRES_NEW:始终创建一个新的事务。 SUPPORTS:如果当前方法已经存在一个事务上下文,则加入该事务;否则以非事务方法执行。 NOT_SUPPORTED:以非事务方法执行,如果当前方法存在事务上下文,则将其暂停。 NEVER:以非事务方法执行,如果当前方法存在事务上下文,则抛出异常。 你可以根据具体的业务需求选择适合的传播行为。 这个吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
propagation=Propagation.NOT_SUPPORTED 你先看看Spring事务传播机制。 此回答整理自钉群“Seata(分布式事务)”
如果想更改Seata中的事务传播行为,默认的REQUIRED传播行为可以根据您的需求改成以下几种合适的选项:
REQUIRES_NEW(创建新事务):不管当前方法是否存在全局事务上下文,都创建一个新的事务。如果当前存在全局事务,会挂起该事务,并在方法执行完毕后恢复。
SUPPORTS(支持事务):如果当前存在全局事务上下文,则加入该事务;如果没有事务上下文,则以非事务方式执行。
NOT_SUPPORTED(不支持事务):不管当前是否存在全局事务上下文,都以非事务方式执行。如果当前存在事务,则挂起该事务。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。