java - 我们请求长时间运行,UI 在响应准备好时超时

标签 java spring multithreading spring-boot angular-fullstack

我有一个 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/

相关文章:

java - 如何让java的随机生成器在构造函数语句中生成 double for变量?

spring - 在每个请求中设置 cookie - SPRING

java - 有关解释死锁的 oracle.com 并发代码的问题

java - 按列将字符串读入数组

java - 使用 Java 反射设置私有(private)字段

java - 如何使用 Apache POI 设置单元格背景?

java - 如何使用 Spring WebFlux 构建响应式(Reactive)内存存储库?

java - 我可以在 URL 路径中使用顶级域名吗?

java - spring boot 应用程序的 tomcat 中的默认线程池

java - JVM 或底层操作系统是否处理线程状态更改