java - spring-boot 多线程聚合,反之亦然

标签 java multithreading spring-boot parallel-processing executorservice

我们正在构建 spring-boot 应用程序。目前,Rest Controller 正在按顺序调用多个 Web 服务。现在我们需要并行执行这些调用并根据以下条件返回响应

  1. 聚合 - 等待所有并行 Web 服务调用完成,然后聚合响应并返回相同的响应。

  2. 无聚合 - 以首先完成的 Web 服务调用返回响应,并放弃/取消/中断正在进行的调用的其余部分。

我做了一些研究,发现了 ExecutorService,但不确定这是否适合这两种类型的场景,因为我对 Spring-Boot 非常陌生。

如果有办法达到同样的目的,请告诉我。

最佳答案

在我看来,ExecutorService 是一个好主意,您应该向 ExecutoService 提交一个 Callable ,以便获得一个 Future

要处理情况 # 1 ,您应该对 isDone() 进行逻辑与返回值方法调用所有 Futures 并处理情况#2,您应该执行逻辑 OR 之类的操作。

这里是引用资料 - Callable & Future

我并不是专门针对 Spring Boot 提出建议,而是来自 Core Java 背景。这将帮助您入门,然后您可以改进方法并切换 API。

希望对你有帮助!!

关于java - spring-boot 多线程聚合,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871921/

相关文章:

java - 无法读取 try catch 中的变量

java - 获取原始 HTTP 响应 header

c# - 限制线程池中使用的处理器数量

c# - 让1个线程同时执行多个方法

java - Spring 自动创建属性文件

mysql - Spring-Boot,无法使用spring-data JPA在MySql中保存unicode字符串

JavaFX 11 : IllegalAccessError when creating Label

java - 使用 Java 从 Mongo 中的文档获取 dbref

Java - 多线程服务器为多个并发客户端提供服务

java - spring boot .war tomcat 应用程序日志不存在