Spring Rest API - 多线程

时间:2015-03-16 23:48:03

标签: spring rest

我开发了一个Spring rest API,它在请求中获取Multipart文件,然后将它们上传到AWS S3位置。这个过程需要时间,客户必须等待整个过程完成。

我不希望客户端等待上传过程完成,但我确实希望在响应中发送图片网址。

我可以只在响应中发送图片网址并打开另一个帖子,将图片上传到S3吗?

1 个答案:

答案 0 :(得分:0)

你可以通过使用Servlet 3.0异步功能的Springs'DeferredResult来实现它。

您的控制器看起来如下所示(最初由here发布Tomasz

@RequestMapping("/upload")
@ResponseBody
public DeferredResult<String> upload() {
    final DeferredResult<String> deferredResult = new DeferredResult<>();
    runInOtherThread(deferredResult);
    return deferredResult;
}

private void runInOtherThread(DeferredResult<String> deferredResult) {
    // Call AWS S3 for upload and collect response
    deferredResult.setResult("File uploaded");
}

请参阅教程以获取完整的工作示例。