TransactionSynchronizationManager如何在事务提交后异步操作

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

问题

业务场景

业务需求上经常会有一些边缘操作,比如主流程操作A:用户报名课程操作入库,边缘操作B:发送邮件或短信通知。

业务要求

  • 操作A操作数据库失败后,事务回滚,那么操作B不能执行。

  • 操作A执行成功后,操作B也必须执行成功

如何实现

  • 普通的执行A,之后执行B,是可以满足要求1,对于要求2通常需要设计补偿的操作

  • 一般边缘的操作,通常会设置成为异步的,以提升性能,比如发送MQ,业务系统负责事务成功后消息发送成功,然后接收系统负责保证通知成功完成

本文内容

如何在spring事务提交之后进行异步操作,这些异步操作必须得在该事务成功提交后才执行,回滚则不执行。

要点

  • 如何在spring事务提交之后操作

  • 如何把操作异步化

实现方案

使用TransactionSynchronizationManager在事务提交之后操作

详见:

https://segmentfault.com/a/1190000004235193 

转载于:https://my.oschina.net/91jason/blog/1512056

你可能感兴趣的:(TransactionSynchronizationManager如何在事务提交后异步操作)