【发布时间】:2019-03-13 16:08:47
【问题描述】:
我想编写一个接受请求的 java rest 服务,立即响应 200 或 202 并在后台处理请求。用户不必等待整个过程完成。请建议
我的休息控制器类
@Override
public Response generateReport(Request requst) {
return service.generateReport(requst);
}
服务类:
@Override
@Async
public Response generateReport(Request requst) {
generateReport(requst);
return Response.ok().build();
}
public void generateReport(Request requst) {
<!-- login to process the request. it will take 15 mins to complete -->
}
【问题讨论】:
-
不知道为什么要这样做,如果后台请求失败怎么办?你仍然可以使用 HEAD 来实现这些东西。
-
当我们处理请求时,会将请求的状态存储在数据库中,用户可以在稍后的时间点看到请求的状态。因为请求可能需要 15 分钟才能完成。