Xsank's Blog

简单事务代码实现

开题

很多情况下会要求事务的特性支持,比如数据库操作,比如消息处理
好在代码上如果需要处理事物的话其实还比较简单

代码

提取接口

事务常见的用法即:begin,commit,rollback,close,那么就提取这样的接口出来:

1
2
3
4
5
6
7
8
9
public interface Transaction {
void begin();
void commit();
void rollback();
void close();
}

自定义实现

  • begin部分完成一些初始化工作
  • commit部分可以做的比较灵活:
    你可以在这里提交你做的操作,并在操作失败的情况下返回异常信息;
    也可以只设置状态,在你自身代码中添加你想做的操作,只是操作完后记得调用commit修改状态即可
    需要注意的是由于发生执行失败需要回滚,所以你需要将rollback所需要执行的操作或数据保存下来,如果执行成功,则清空
  • rollback的部分,根据commit的执行情况执行回滚(通常都是抛异常时),当然在rollback操作时还是会发生异常,根据业务场景可以加入重试策略
  • close的部分释放资源

总结

根据事物的特性代码上实现就这些了,高级的场景另外分析