Closed ispengya closed 9 months ago
同步
TransactionSynchronizationManager.registerSynchronization( new TransactionSynchronization() { @SneakyThrows @Override public void afterCompletion(int status) { if (status==TransactionSynchronization.STATUS_COMMITTED){ //事务成功提交,手动清理ThreadLocal TransactionSynchronizationManager.clear(); //事务后执行 if (async) { doAsyncInvoke(record); } else { doInvoke(record); } } } });
能不能提供下具体出现bug的代码,我复下
@zongzibinbin @Transactional public void test(){ mqProducer.sendSecureMsg("ispengya","test","test"); } 测试先把定时任务注释掉,那条数据会被定时任务执行,造成了数据表没有信息的假象
@Transactional public void test(){ mqProducer.sendSecureMsg("ispengya","test","test"); }
同步
执行的时候, 在执行反射的时候第二次进入切面,还处于事务当中 ,这样不但不会执行方法,本地消息表还会多一条记录。(在执行异步的时候由于不是一个线程,所以不会出现此问题)