手工开启事务注意保证commit或rollback及避免长事务【附代码】

今天爱分享给大家带来手工开启事务注意保证commit或rollback及避免长事务【附代码】,希望能够帮助到大家。
用事务时,确保commit或rollback执行。避免由于代码问题,commit或rollback未执行,连接未正常归还连接池,导致服务整体挂掉。(生产我知道的有两次)。错误代码示例:


ITransactionManager txManager = getTransactionManager();
txManager.begin();
try{
   insert(String orderNo, Limit limit);
   // 问题一:有可能外部服务不稳定,导致长事务
   callRemoteService(orderNo);
   int res = updateOrder(orderNo);
   // 问题二:有可能事务未提交
   if(res > 0)
      txManager.commit();
}catch(Exception e){
   txManager.rollback();
   logger.error(e.getMessage(), e);
}



正确代码:


 callRemoteService(orderNo);
 ITransactionManager txManager = getTransactionManager();
 txManager.begin();
 try{
    insert(String orderNo, Limit limit);
    updateOrder(orderNo);
    txManager.commit();
 }catch(Exception e){
    txManager.rollback();
    logger.error(e.getMessage(), e);
 }



原文链接:https://blog.itblood.com/4012.html,转载请注明出处。
0
最淫荡的房子v0.2.31c AI版[PC+安卓/1.12G/更新]The Lewdest House [v0.2.31c Public] [欧美SLG/汉化/动态]
最淫荡的房子v0.2.31c AI版[PC+安卓/1.12G/更新]The Lewdest House [v0.2.31c Public] [欧美SLG/汉化/动态]
刚刚 有人购买 去瞅瞅看

站点公告

显示验证码
没有账号?注册  忘记密码?