说明
二阶提交,非阻塞,全手动编写
需要实现try、confirm、cancel三个阶段方法
优点
性能好
因为代码都是自己写的,所以有一些个性化的功能可以自己实现
实现
在业务接口上,增加注解@LocalTCC<br>
对应try方法上,增加注解<br>@TwoPhaseBusinessAction(name = "prepare", commitMethod = "commit", rollbackMethod = "rollback")<br>
name是try方法名
commitMethod是confirm方法名
rollbackMethod是cancel方法名
在try方法中,可以通过RootContext.getXID()获取事务ID
在confirm和cancel方法中,可以通过BusinessActionContext.getXid()获取事务ID<br>
在prepare方法中,可以定义注解@BusinessActionContextParameter(paramName = "param1"),注解参数可以在commitMethod和rollbackMethod方法中,通过上下文BusinessActionContext.getActionContext("param")读取<br>
注意要在cancel实现空回滚,即判断try是否已执行(例如从数据库根据事务ID,查询是否存在数据),若未执行,则记录未执行状态或数据<br>
要在try方法,避免业务悬挂,例如由于响应延迟或者重复执行,导致cancel先执行了,此时要判断是否数据是否已存在,若存在,则拒绝执行