我有一个弹簧控制器和请求映射方法。
@RequestMapping(value = { "/doSomething.do" })
public ModelAndView emailToNonBelievers(){
.....
// do something which takes lot of time
// send response..
return modelAndView;
}
这种方法需要很长时间,大约一个小时。(这适用于管理员,而不是用户。管理员不需要等待一个小时。只需点火即可忘记,没关系。这不是批量工作)
但是我发现客户端以3分钟的间隔重复发送请求(观察了6次,我停止了Spring服务)。
我猜是因为客户端没有得到服务器的任何响应。
如果我的猜测是正确的,服务器应该回应“您的请求被接受,只是闭嘴等待!!” 。
但是如何在Spring完成作业之前发送响应(200 ok)?
或者我错过了什么?
答案 0 :(得分:1)
在这种情况下,建议使用异步任务处理。
Spring通过@Async
注释为其提供开箱即用的支持。
请咨询my answer以获取类似查询的详细设置和{{ 3}} for docs。