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 {
/**
* 創(chuàng)建全局事務(wù)
* @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("全局事務(wù)回滾異常", e);
}
}
}
使用
public void xxxx(Object paramObj) {
GlobalTransaction globalTransaction = GlobalTransactionUtils.createGlobalTransaction();
try {
globalTransaction.begin();
log.error("推送出庫入?yún)?{}", JSON.toJSONString(dtoList));
globalTransaction.commit();
} catch (BusinessException e) {
log.error("業(yè)務(wù)異常", e);
GlobalTransactionUtils.rollback(globalTransaction);
// 業(yè)務(wù)異常
} catch (Exception e) {
log.error("異常", e);
GlobalTransactionUtils.rollback(globalTransaction);
}
}