事務方法內先提交事務,再進行其他操作

問題描述:有時候會有這種場景,一個事務方法中,有兩步操作,操作一爲插入數據庫操作,操作二把操作一插入數據的id發給其他系統,其他系統拿到id後來查詢數據,但是會發現有時候系統運行比較快的時候,查詢數據會查不到。

原因:因爲兩步操作都是在一個事務方法中的,操作二雖然拿到了操作一插入數據的id,然後發給了其他系統,但是這個時候,其實還不能保證事務已經提交了,所以其他的系統通過id來查詢數據,會發現有時候查不到。

解決辦法

方法一: 把操作二從事務方法中分離出來,然後放到事務方法後面去執行;

方法二:在事務方法中加入如下代碼:

TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
            @Override
            public void afterCommit() {
               //操作二
            }
        });

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章