异步方法获取最新数据

在同步方法中调用异步方法新增数据,在同步方法中获取最新数据

将主方法查询也放入事务,并使用 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;
                        });

  

 

posted @ 2025-06-19 17:30  红尘沙漏  阅读(10)  评论(0)    收藏  举报