如果请求花费太长时间,spring是否有任何解决方案可以提前返回控制器方法?
这个想法是在http头中传递一个超时值,如果超过这个值,就会返回一个响应。
下面的控制器方法示例,我想将其应用于
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test(@RequestHeader Long timeOut) {
//process request here and return an error response if it goes longer than timeOut
return "<Result of process request>";
}
我可能可以通过摆弄线程来做到这一点,但我更愿意看看spring是否有一些解决方案。
谢谢。
将方法的返回类型更改为Callable<String>
。这将使控制器方法异步执行。现在,为了设置处理请求的超时,您可以更新springmvc配置:
<mvc:annotation-driven>
<mvc:async-support default-timeout="3000"/>
</mvc:annotation-driven>
或者,您可以在RequestMappingHandlerAdapter
上设置超时值。