【问题标题】:Long running we request, UI gets timed out by the time response is ready我们请求长时间运行,UI 在响应准备就绪时超时
【发布时间】: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


    【解决方案1】:

    对我来说,这听起来像是您想要流式传输数据。

    也许你想看看 spring 的响应式堆栈:

    有了这个,你的 Angular 应用程序应该能够在单个项目发生时显示或反应非常完成的处理。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 2022-06-17
      • 2020-03-25
      • 2017-12-03
      • 1970-01-01
      相关资源
      最近更新 更多