异步方法获取最新数据
在同步方法中调用异步方法新增数据,在同步方法中获取最新数据
将主方法查询也放入事务,并使用 PROPAGATION_REQUIRES_NEW:
@Service
public class DataService {
@Autowired
private PlatformTransactionManager transactionManager;
public void mainMethod() {
// 启动异步事务
new Thread(() -> {
TransactionTemplate txTemplate = new TransactionTemplate(transactionManager);
txTemplate.execute(status -> {
insertData();
return null;
});
}).start();
// 主线程等待后查询
Thread.sleep(200); // 简单等待(不推荐,仅演示)
// 新建事务查询
new TransactionTemplate(transactionManager,
new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRES_NEW))
.execute(status -> {
queryData(); // 在新事务中查询
return null;
});
}
}
//返回值
AtomicReference<AiMessageRespVO> userInfo = new AtomicReference();
//新建事务查询
new TransactionTemplate(transactionManager,
new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRES_NEW))
.execute(status -> {
//查询信息
MessagePageReqVO pageReqVO = new MessagePageReqVO();
pageReqVO.setSessionId(sessionId);
pageReqVO.setUserId(memberUser.getId());
if(CollectionUtil.isNotEmpty(reqVo.getHotTopicsVO().getUserInput())){
pageReqVO.setContent(reqVo.getHotTopicsVO().getUserInput().get(0));
}
//查询信息
userInfo.set(aiMessageService.getSuspendMessage(pageReqVO));
return userInfo;
});

浙公网安备 33010602011771号