我有一个 Angular 应用程序和一个 Spring Boot 应用程序,有一个请求从 UI 发送到 Spring Boot,其中包含 100-200 个对象,甚至更多,对于每个对象,在循环内调用另一个后端系统。 就像..
list.parallelStream().forEach(e->{
//code using rest template for backend.
// add the responses to an array list.
// i can send all these objects to backend at one shot because they have some limitations and dont support it currently.
});
这需要很长时间才能完成,当所有请求完成时,UI 就会超时。
我尝试使用执行器框架、forkjoin 或并行,但这还不够。因为浏览器等待 30-60 秒。
我想切换到向 Spring Boot 提交请求的任何进程,从 UI 我应该能够在时间间隔后检查请求的状态。我尝试了 DeferredResult、@Async、Completable future 和 StreamingResponseBody 等概念。有什么方法可以处理这些长时间运行的请求吗???
其中一些概念有效,但当输入大小增加时,它们也无法正常工作。我如何设法获取我的请求的状态并使用一些进度条等来向用户显示。 或者有更好的方法吗?
最佳答案
对我来说,这听起来像是您想要流式传输数据。
也许 spring 的响应式堆栈是您想要了解的内容:
有了这个,你的角度应用程序应该能够在单个项目发生时显示或 react 非常完成的处理。
希望有帮助。
关于java - 我们请求长时间运行,UI 在响应准备好时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60016060/