目录
1、REQUIRED(默认传播机制,支持当前事务)
如果当前没有事务,就新建一个事务,如果已经存在一个事务中,就加入到这个事务中。
使用场景
- serviceA 无事务,serviceB 事务传播机制类型
REQUIRED
,serviceA调用serviceB,如果serviceB异常则serviceA正常提交,serviceB回滚 - serviceA 事务传播机制类型
REQUIRED
,serviceB 无事务,serviceA调用serviceB,如果serviceB异常则serviceA回滚,serviceB回滚
2、 SUPPORTS(支持当前事务)
如果当前没有事务就以非事务方式执行,如果当前存在事务,则加入当前事务。
3、 MANDATORY(支持当前事务,强制事务)
使用当前事务,如果当前没有事务,就抛出异常
使用场景
- serviceA 无事务,serviceB 事务传播机制类型
MANDATORY
,serviceA调用serviceB,当前serviceA 没有事务,就会抛出异常
4、REQUIRES_NEW
新建事务,如果当前存在事务,则把当前事务挂起。REQUIRES_NEW
会独立提交事务,不受调用者的事务影响,父级异常,它也是正常提交。
使用场景
- serviceA 事务传播机制类型
REQUIRED
,serviceB 事务传播机制类型REQUIRES_NEW
,serviceA调用serviceB,如果serviceA异常,则serviceA回滚,serviceB可以正常提交 - serviceA 事务传播机制类型
REQUIRED
,serviceB 事务传播机制类型REQUIRES_NEW
,serviceA调用serviceB,如果serviceB异常,则serviceA回滚,serviceB回滚
5、NOT_SUPPORTED
以非事务方式执行操作,如果当前存在事务,把当前事务挂起。
使用场景
- serviceA 事务传播机制类型
REQUIRED
,serviceB 事务传播机制类型NOT_SUPPORTED
,serviceA调用serviceB,如果serviceB异常,则serviceA回滚,serviceB可以正常提交
6、NEVER (强制非事务)
以非事务方法执行,如果当前存在事务,则抛出异常
7、NESTED
如果当前存在事务,它将会成为父级事务的一个子事务,方法结束后并没有提交,只有等父事务结束才提交,如果当前不存在事务,则新建事务。
使用场景
- serviceA 事务传播机制类型
REQUIRED
,serviceB 事务传播机制类型NESTED
,serviceA调用serviceB,如果serviceA异常,则serviceA回滚,serviceB回滚。 - serviceA 事务传播机制类型
REQUIRED
,serviceB 事务传播机制类型NESTED
,serviceA调用serviceB,如果serviceB异常,则serviceA可以捕获异常后正常提交,serviceB回滚