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);
}
}