0
我想使用異步解決方案使用Spring MVC控制器方法中的OutputStream
或Writer
流式傳輸內容,即不阻止用於http請求的基本線程池。據我所能找到的一般是使用DefferedResult<?>
作爲異步。當你返回一個視圖字符串名稱時很好,但不能想象它能用於流的方式。找不到有用的東西。Spring 3 MVC,異步流式響應
感謝
我想使用異步解決方案使用Spring MVC控制器方法中的OutputStream
或Writer
流式傳輸內容,即不阻止用於http請求的基本線程池。據我所能找到的一般是使用DefferedResult<?>
作爲異步。當你返回一個視圖字符串名稱時很好,但不能想象它能用於流的方式。找不到有用的東西。Spring 3 MVC,異步流式響應
感謝
如上所述here你可以在另一個線程從而unloded HTTP線程池進行計算。 您可以嘗試合併DefferedResult
和byte[]
(DefferedResult)返回類型(之前註冊ByteArrayHttpMessageConverter
)。所以最終的方法將如下所示:
@ResponseBody
public DefferedResult<byte[]> foo(HttpServlet response) {
//set headers using response
response.setContentType("someContentType");
...
DefferedResult<byte[]> r = new DefferedResult<>();
executionService.submit(() -> {
r.setResult(getBytes());
});
return r;
}
另一種選擇是將Defferedresult和ResponseEntity結合起來。不要忘記在servlet 3.0+容器中使用它
那麼你可以嘗試使用WebSocket方法; cliet正在監聽任何事件,並且您只需完成以異步模式流式傳輸內容,然後就可以傳遞給客戶端 –