Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringRESTAPI-多线程_Spring_Rest - Fatal编程技术网

SpringRESTAPI-多线程

SpringRESTAPI-多线程,spring,rest,Spring,Rest,我开发了一个SpringRESTAPI,它在请求中获取多部分文件,然后将它们上传到AWSS3位置。这个过程需要时间,客户必须等待整个过程完成 我不希望客户端等待此上载过程完成,但我确实希望在响应中发送图像URL 我可以在响应中发送图像URL并打开另一个线程将图像上载到S3吗?您可以通过Springs'实现它,Springs利用Servlet 3.0异步功能 您的控制器如下所示(最初由发布者发布) @RequestMapping(“/upload”) @应答器 公共延迟结果上载(){ 最终递延结果

我开发了一个SpringRESTAPI,它在请求中获取多部分文件,然后将它们上传到AWSS3位置。这个过程需要时间,客户必须等待整个过程完成

我不希望客户端等待此上载过程完成,但我确实希望在响应中发送图像URL


我可以在响应中发送图像URL并打开另一个线程将图像上载到S3吗?

您可以通过Springs'实现它,Springs利用Servlet 3.0异步功能

您的控制器如下所示(最初由发布者发布)

@RequestMapping(“/upload”)
@应答器
公共延迟结果上载(){
最终递延结果递延结果=新递延结果();
运行其他线程(延迟结果);
返回延迟结果;
}
其他线程中运行的私有void(DeferredResult DeferredResult){
//调用AWS S3进行上传和收集响应
deferredResult.setResult(“上传的文件”);
}

有关完整的工作示例,请参阅教程。

我建议用户将文件直接上传到S3。
@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");
}