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


TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

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

deleteUserAndPoints(){

  第一步:刪除用戶

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

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

    如果失敗則:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(), 然后return 相應的提示信息(“刪除失敗”);如果直接return 其實事務不會回滾的,導致用戶信息刪除,積分信息未刪除;另外,我們正常情況下可以直接 throw new RuntimeException(),也能回滾事務,但是這等於手動制造了一個系統異常,個人覺得很不友好

    如果成功則:不處理

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM