spring cloud微服務下手動回滾事務

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();rest

這裏使用的場景是,跨服務調用接口,好比:用戶信息和用戶積分信息在分別存在兩個系統中,咱們在用戶系統中調用一個接口同時刪除這兩個信息,假設service層方法爲deleteUserAndPoints(),具體以下所示:接口

deleteUserAndPoints(){事務

  第一步:刪除用戶io

  第二步:經過restTemplate方式調用積分系統刪除接口service

    根據返回的結果狀態,成功或者失敗方法

    若是失敗則:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(), 而後return 相應的提示信息(「刪除失敗」);若是直接return 其實事務不會回滾的,致使用戶信息刪除,積分信息未刪除;另外,咱們正常狀況下能夠直接 throw new RuntimeException(),也能回滾事務,可是這等於手動製造了一個系統異常,我的以爲很不友好im

    若是成功則:不處理異常

}vi

相關文章
相關標籤/搜索