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正在监听任何事件,并且您只需完成以异步模式流式传输内容,然后就可以传递给客户端 –