我正在使用 spring webflux,我需要执行异步任务作为方法的一部分,该方法不应阻止对用户的主要响应。具体来说,我想在完成主要任务后调用异步方法,但不延迟响应。

这是我想要实现的目标的简化版本:

public Mono publishPackage(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 在后台运行而不阻塞响应?

    以上就是如何在 Spring WebFlux 中运行异步任务而不阻塞主响应?的详细内容,更多请关注php中文网其它相关文章!