我们一开始用了延时, sleep几秒才把数据发送到mq.
后来用了, @TransactionalEventListener, 在该注解上配置在事务结束后才处理这个event,把消息发送到mq.
代码大致就是是, save方法完成后发送event.然后监听的时候用@TransactionalEventListener并配置phase = TransactionPhase.AFTER_COMPLETION, 在事务提交完后在执行后面的逻辑. 这样就保证了先save后sendMsg.
它的原理是根据上下文中的transactionManager,从中获取事务提交的状态,再执行下面的逻辑.
Spring-Data-Jpa 保存时save和saveAndFlush的区别详解Spring-Data-Jpa 保存时save和saveAndFlush的区别 Jpa是我们经常用到的ORM框架,使用它可以快速便捷的操作数据库,那么它有一个保存方法,你肯定...