赞
踩
项目使用的是spring+mybatis+mysql,今天,我需要把处理一个业务就是,当用户出金失败时,事务能够回滚,同时减少用户的等待时间,因为我发现当处理失败时,用户需要等上1分钟以上的时间,这是不合理的。那么经过一系列的调查发现:spring的事务超时(使用Java注解方式)和mysql
InnoDB事务超时是相互关联的。
在一个需要进行事务回滚的方法上加入@Transactional的事务注解,timeout超时时间设置为2秒,也就是说发生事务回滚后,2秒钟后对用户响应。
@Transactional(timeout=2)
public int updateForzenMoney(MoneyTransfer moneyTransfer, int uid) {
// 如果是出金请求,则预扣除冻结资金
if (moneyTransfer.getType().intValue() == 1) {
moneyTransferService.updateTotalmoneyForPerTransfermoney(uid, moneyTransfer.getAmount());
// 将请求插入money_transfer表中
moneyTransferService.addMoneyTransfer(moneyTransfer);
return 1;
} else {
moneyTransferService.addMoneyTransfer(moneyTransfer);
return 2;
}
}
通过mysql控制台的模拟操作(强
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。