我们正在构建 spring-boot 应用程序。目前,Rest Controller 正在按顺序调用多个 Web 服务。现在我们需要并行执行这些调用并根据以下条件返回响应
聚合 - 等待所有并行 Web 服务调用完成,然后聚合响应并返回相同的响应。
无聚合 - 以首先完成的 Web 服务调用返回响应,并放弃/取消/中断正在进行的调用的其余部分。
我做了一些研究,发现了 ExecutorService,但不确定这是否适合这两种类型的场景,因为我对 Spring-Boot 非常陌生。
如果有办法达到同样的目的,请告诉我。
最佳答案
在我看来,ExecutorService
是一个好主意,您应该向 ExecutoService
提交一个 Callable
,以便获得一个 Future
。
要处理情况 # 1 ,您应该对 isDone() 进行逻辑与返回值方法调用所有 Futures 并处理情况#2,您应该执行逻辑 OR 之类的操作。
我并不是专门针对 Spring Boot 提出建议,而是来自 Core Java 背景。这将帮助您入门,然后您可以改进方法并切换 API。
希望对你有帮助!!
关于java - spring-boot 多线程聚合,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871921/