事务提交后回调

简介: 事务提交后回调
  1. 定义DoTransactionCompletion
import org.springframework.transaction.support.TransactionSynchronization;
public class DoTransactionCompletion implements TransactionSynchronization {
    private Runnable runnable;
    public DoTransactionCompletion(Runnable runnable) {
        this.runnable = runnable;
    }
    /**
     * 事务完成后的回调方法
     * @param status
     */
    @Override
    public void afterCompletion(int status) {
        if(status == TransactionSynchronization.STATUS_COMMITTED){
            runnable.run();
        }
    }
}
  1. 定义TransactionUtils
import org.springframework.transaction.support.TransactionSynchronizationManager;
public class TransactionUtils {
    public static void doAfterTransaction(DoTransactionCompletion doTransactionCompletion){
        if(TransactionSynchronizationManager.isActualTransactionActive()){
            TransactionSynchronizationManager.registerSynchronization(doTransactionCompletion);
        }
    }
}
  1. 使用TransactionUtils
@Test
    @Transactional
    @Rollback(false) //单元测试默认不提交事务,此注解强制提交事务
    public void doTx(){
        //开始事务
        System.out.println("开始事务");
        TransactionUtils.doAfterTransaction(new DoTransactionCompletion(() -> {
            //事务执行完后回调的方法,例如 发送一个MQ,RPC等操作
            System.out.println("事务执行完后回调的方法");
        }));
        //结束事务
        System.out.println("结束事务");
    }
}
目录
相关文章
|
6月前
|
SQL API 数据库
Seata AT模式问题之抛出异常触发回滚如何解决
Seata是一款开源的分布式事务解决方案,旨在提供高效且无缝的分布式事务服务;在集成和使用Seata过程中,开发者可能会遇到不同的异常问题,本合集针对Seata常见异常进行系统整理,为开发者提供详细的问题分析和解决方案,助力高效解决分布式事务中的难题
513 12
|
6月前
|
iOS开发
如何让你的应用在后台可以继续处理未完事务
如何让你的应用在后台可以继续处理未完事务
56 1
|
XML Java 数据格式
五、事务操作2
五、事务操作2
66 0
|
6月前
https://www.fcomcn.com提交七天还在审核中
阿里云备案工作人员服务态度不错,但 https://www.fcomcn.com 提交七天还在审核中,请问几天能下来结果,谢谢。
55 0
|
XML Java API
五、事务操作1
五、事务操作1
91 0
五、事务操作1
|
SQL 数据库
源码解析Seata AT模式中分支事务的提交或回滚是如何被触发的
源码解析Seata AT模式中分支事务的提交或回滚是如何被触发的
332 0
源码解析Seata AT模式中分支事务的提交或回滚是如何被触发的
|
消息中间件 存储 网络协议
【视频】事务消息| 学习笔记
快速学习【视频】事务消息
【视频】事务消息| 学习笔记
|
消息中间件 RocketMQ 开发者
事务消息的实现|学习笔记
快速学习事务消息的实现
事务消息的实现|学习笔记
dtm分布式事务——saga事务超时多次触发
saga属于长事务,因此持续的时间跨度很大,可能是100ms到1天,因此saga没有默认的超时时间。dtm支持saga事务单独指定超时时间,到了超时时间,全局事务就会回滚。
462 0