spring mvc:当控制器的返回类型为CompletableFuture时,如何设置请求超时?

问题描述 投票:1回答:1

如果一个控制器方法的返回类型是CompletableFuture,结果将在后面异步完成,但如何为此请求设置超时,以便如果没有及时完成,spring将中止请求?

以遗留的方式,通过AsyncContext,我可以做到。但是CompletableFuture案件怎么样?我找不到任何相关的文档。

请注意,我知道全局默认超时设置,但我的问题是如何设置每个请求的超时。

spring spring-mvc java-8 servlet-3.0
1个回答
0
投票

我试着回答我的问题。

CompletableFuture的加工与DeferredResult相同?

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-async-processing

只有在处理程序方法返回后,spring才会执行request.startAsync(),然后我认为更改超时的唯一方法是启用AsyncHandlerInterceptor并在request.getAsyncContext().setTimeout()中执行afterConcurrentHandlingStarted()

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/AsyncHandlerInterceptor.html#afterConcurrentHandlingStarted-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-java.lang.Object-

© www.soinside.com 2019 - 2024. All rights reserved.