我正在使用 Spring WebFlux,我需要执行异步任务作为方法的一部分,该方法不应阻止对用户的主要响应。具体来说,我想在完成主要任务后调用异步方法,但不延迟响应。
这是我想要实现的目标的简化版本:
public MonopublishPackage(RequestDTO requestDTO) { return publishPackageService.doSomething(requestDTO) .flatMap(responseDTO -> doSomethingInAsync(requestDTO, responseDTO) .thenReturn(responseDTO) ); } // Method that simulates an asynchronous task with a 5-second delay public Mono doSomethingInAsync(RequestDTO requestDTO, ResponseDTO responseDTO) { return Mono.delay(Duration.ofSeconds(5)) .then(); // Converts the delayed Mono to Mono }
此调用完成后,我想异步执行 doSomethingInAsync(requestDTO, responseDTO)。
doSomethingInAsync 方法应该是非阻塞的,并且不会延迟主要响应。
问题:
doSomethingInAsync 方法正在执行,但它似乎可能会阻止响应或未按预期异步运行。如何确保 doSomethingInAsync 异步运行并且不会阻止对用户的响应?
细节:
publishPackageService.doSomething(requestDTO): 返回一个 Mono。
doSomethingInAsync(requestDTO, responseDTO):是一个异步方法,我想在不阻塞响应的情况下运行它。
问题:
如何确保 doSomethingInAsync 在后台运行而不阻塞响应?
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3