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