事务提交后执行其他方法

场景:
事务A调用异步事务B:
事务A逻辑:接口接收参数后将库存变动明细保存到记录表,保存后调用异步方法B。
事务B逻辑:将库存变动明细记录表数据汇总到库存表。

问题:
如果事务A在事务提交之前已经调用事务B,且在异步调用事务B之后事务A出现异常,导致事务A回滚,那么事务B在执行时拿到的数据就是错误的,导致汇总数据时有可能出现错误,导致库存不准确。

解决方案:
在事务A提交事务之后再调用异步事务B。

@Transactional
public void save(){
	saveStockDetail();//保存库存变动明细
	saveStock();//事务提交后执行汇总库存方法
}

/**
事务提交之后执行
*/
private void saveStock(){
	TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
        @Override
        public void afterCommit() {
            //异步更新库存
            updStock();
        }
 });
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值