seata 事务公共类

seata SAGA模式 公共类和使用

import io.seata.core.exception.TransactionException;
import io.seata.tm.api.GlobalTransaction;
import io.seata.tm.api.GlobalTransactionContext;
import lombok.extern.slf4j.Slf4j;
// SAGA模式
@Slf4j
public class GlobalTransactionUtils {

    /**
     * 创建全局事务
     * @return
     */
    public static GlobalTransaction createGlobalTransaction(){
        return GlobalTransactionContext.createNew();
//      return GlobalTransactionContext.getCurrentOrCreate();
    }

    /**
     * 回滚
     * @param globalTransaction
     */
    public static void rollback(GlobalTransaction globalTransaction){
        try {
            globalTransaction.rollback();
        } catch (TransactionException e) {
            log.error("全局事务回滚异常", e);
        }
    }

}

使用

public void xxxx(Object paramObj) {
        GlobalTransaction globalTransaction = GlobalTransactionUtils.createGlobalTransaction();
        try {
            globalTransaction.begin();
            log.error("推送出库入参:{}", JSON.toJSONString(dtoList));
             
            globalTransaction.commit();
        } catch (BusinessException e) {
            log.error("业务异常", e);
            GlobalTransactionUtils.rollback(globalTransaction);
            // 业务异常
             
        } catch (Exception e) {
            log.error("异常", e);
            GlobalTransactionUtils.rollback(globalTransaction);
             
        }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容