事务的超时回滚

简介: 事务的超时回滚

事务的超时回滚


什么是超时回滚


  1. 如果一个事务执行的时间超过某个时间限制,就让该事务回滚。
  2. 可以通过设置事务超时回顾来实现。


基本语法


@Transactional(timeout = 时间)


代码演示


@Transactional(
            propagation=propagation.REQUIRES_NEW,
            //设置事务传播属性
            isolation=Isolation.READ_COMMITTED,
            //设置隔离级别
            timeout=2
                              //设置事务超时时间


超时回滚-实例代码实现


修改GoodsService.java ,增加buyGoodsByTxTimeout()

测试事务的超时回滚(超时时间,我们设置为2 秒)

@Transactional(timeout = 2)
public void buyGoodsByTxTimeout(int user_id, int goods_id, int num) {
    //查询到商品价格
    Float goods_price = goodsDao.queryPriceById02(goods_id);
    //购买商品,减去余额
    goodsDao.updateBalance02(user_id, goods_price * num);
    System.out.println("====超时start====");
    try {
        Thread.sleep(4000);
        //休眠4秒
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    System.out.println("====超时end====");
    //更新库存
    goodsDao.updateAmount02(goods_id, num);
}


测试TxTest.java, 增加测试方法


//测试购买商品(使用了声明式事务, 测试事务超时回滚)
@Test
public void buyGoodsByTxTimeoutTest() {
    ApplicationContext ioc = new ClassPathXmlApplicationContext("tx_ioc.xml");
    GoodsService bean = ioc.getBean(GoodsService.class);
    bean.buyGoodsByTxTimeout(1, 1, 1);
    System.out.println("------ok--------");
}

抛出异常,事务进行回滚,原来的操作将会撤销

Transcation timed out : deadline was …

相关文章
|
Nacos 数据库 开发者
Seata回滚问题之异常如何解决
Seata是一款开源的分布式事务解决方案,旨在提供高效且无缝的分布式事务服务;在集成和使用Seata过程中,开发者可能会遇到不同的异常问题,本合集针对Seata常见异常进行系统整理,为开发者提供详细的问题分析和解决方案,助力高效解决分布式事务中的难题。
854 82
|
机器学习/深度学习 数据可视化 算法
泰酷辣!探索七种常用的机器学习图型
泰酷辣!探索七种常用的机器学习图型
1454 0
|
8月前
|
网络协议 安全 物联网
《复杂环境下IPv6地址规划与子网划分全攻略》
随着网络环境日益复杂及设备数量激增,IPv6以其超大地址空间和即插即用优势成为网络变革的关键。本文深入探讨IPv6地址规划与子网划分的挑战与方法,包括夯实基础知识、遵循层次性与高效性原则、应对物联网与云计算等特殊场景需求,以及验证优化的重要性。通过合理规划与科学划分,可构建高效、稳定且安全的IPv6网络,为未来发展奠定基础。
554 19
|
数据采集 自然语言处理 数据挖掘
利用ChatGPT进行数据分析——如何提出一个好的prompt
利用ChatGPT进行数据分析——如何提出一个好的prompt
536 0
|
敏捷开发 安全 测试技术
PingCode
【10月更文挑战第19天】PingCode
773 62
|
敏捷开发 网络协议 测试技术
|
算法
串ababaaababaa的next和串ababaabab的nextval
本文介绍了计算字符串的next数组和nextval数组的方法,通过分析两个具体的例子来展示如何计算这些数组,这些数组通常用于KMP算法中。
833 0
串ababaaababaa的next和串ababaabab的nextval
|
存储 分布式计算 Hadoop
|
存储 缓存 运维
异构内存管理(HMM) 【ChatGPT】
异构内存管理(HMM) 【ChatGPT】
|
存储 算法 开发者
【Python 基础补充 range()】一文带你了解range()函数的作用
【Python 基础补充 range()】一文带你了解range()函数的作用
2387 0