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