首页 > 解决方案 > spring mvc:当控制器的返回类型为CompletableFuture时如何设置请求超时?

问题描述

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

以传统方式, via AsyncContext,我可以做到。但是CompletableFuture案例呢?我找不到任何相关的文档。

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

标签: springspring-mvcjava-8servlet-3.0

解决方案


我试着回答我的问题。

的处理CompletableFutureDeferredResult?

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

springrequest.startAsync()只会在处理程序方法返回后才会执行,那么我认为更改超时的唯一方法是启用 aAsyncHandlerInterceptor和 do request.getAsyncContext().setTimeout()in 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-


推荐阅读