mysterin / question_and_answer

1 stars 0 forks source link

事务传播行为 #129

Closed mysterin closed 5 years ago

mysterin commented 5 years ago

假设: serviceA 调用 serviceB, 然后 serviceB 使用下面传播行为:

PROPAGATION_REQUIRED

表示 serviceB 必须要在事务运行, 如果 serviceA 有事务, 就有 serviceA 的事务; 如果没有, 就新建一个事务执行.

PROPAGATION_SUPPORTS

表示 serviceB 不一定在事务运行, 当然如果 serviceA 有事务, 那就在这个事务运行吧.

PROPAGATION_MANDATORY

表示 serviceB 必须要在事务运行, 如果 serviceA 没有设置事务运行, 那么 serviceB 会抛出异常.

PROPAGATION_REQUIRES_NEW

表示 serviceB 会新建一个事务运行, 如果 serviceA 有事务, 那么这个事务会被挂起. serviceA 回滚不会导致 serviceB 回滚.

PROPAGATION_NOT_SUPPORTED

表示 serviceB 以非事务状态运行, 如果 serviceA 有事务, 那么这个事务会先被挂起.

PROPAGATION_NEVER

表示 serviceB 不能在事务运行, 如果 serviceA 有事务, 那么serviceB 会抛出异常.

PROPAGATION_NESTED

表示 serviceB 的事务嵌套在 serviceA 的事务, serviceA 的回滚会导致 serviceB 的回滚.