【发布时间】:2020-02-01 10:34:54
【问题描述】:
我有一个 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、可完成的未来和 StreamingResponseBody 等概念。有什么办法可以处理这些长时间运行的请求???
其中一些概念有效,但当输入大小增加时,它们也无法正常工作。我如何设法获取我的请求状态并使用一些进度条等来显示甚至用户。 还是有更好的方法?
【问题讨论】:
标签: java spring multithreading spring-boot angular-fullstack