如果请求花费的时间太长,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是否有一些解决方案。
感谢。
答案 0 :(得分:2)
将方法的返回类型更改为Callable<String>
。这将使控制器方法异步执行。现在,要设置处理请求的超时,您可以更新spring mvc配置:
<mvc:annotation-driven>
<mvc:async-support default-timeout="3000"/>
</mvc:annotation-driven>
或者,您可以在RequestMappingHandlerAdapter
上设置超时值。