2015-03-16 5 views
0

Я разработал API-интерфейс Spring Rest, который принимает файл Multipart в запросе, а затем загружает его в местоположение AWS S3. Этот процесс требует времени, и клиент должен дождаться завершения всего этого процесса.API Spring Rest - несколько потоков

Я не хочу, чтобы клиент дождался завершения этого процесса загрузки, но я хочу отправить URL-адреса изображений в ответ.

Могу ли я просто отправить URL-адреса изображений в ответ и открыть другой поток для загрузки изображений на S3?

+0

Я бы предложил пользователям загрузить файлы непосредственно на S3. – chrylis

ответ

0

Вы можете достичь этого через Springs 'DeferredResult, который использует возможности Ascend для сервлета 3.0.

Ваш контроллер будет выглядеть, как показано ниже (Сообщение 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"); 
} 

Приведи учебник для полного рабочего примера.

Смежные вопросы