我們一開始用了延時, sleep幾秒才把數(shù)據(jù)發(fā)送到mq.
后來用了, @TransactionalEventListener, 在該注解上配置在事務(wù)結(jié)束后才處理這個event,把消息發(fā)送到mq.
代碼大致就是是, save方法完成后發(fā)送event.然后監(jiān)聽的時候用@TransactionalEventListener并配置phase = TransactionPhase.AFTER_COMPLETION, 在事務(wù)提交完后在執(zhí)行后面的邏輯. 這樣就保證了先save后sendMsg.
它的原理是根據(jù)上下文中的transactionManager,從中獲取事務(wù)提交的狀態(tài),再執(zhí)行下面的邏輯.
Spring-Data-Jpa 保存時save和saveAndFlush的區(qū)別詳解Spring-Data-Jpa 保存時save和saveAndFlush的區(qū)別 Jpa是我們經(jīng)常用到的ORM框架,使用它可以快速便捷的操作數(shù)據(jù)庫,那么它有一個保存方法殴边,你肯定...