我们正在构建spring-boot应用程序。目前,Rest控制器正在按顺序调用多个Web服务。现在我们需要并行执行这些调用,并按照以下条件返回响应
聚合-等待所有并行Web服务调用完成,然后聚合响应并返回相同的响应。
无聚合-返回响应,无论哪个Web服务调用先完成,然后放弃/取消/中断其余正在进行的调用。
我进行了一些研究,找到了ExecutorService,但是不确定这是否适合这两种类型的场景,因为我是Spring-Boot的新手。
请让我知道是否有办法实现这一目标。
最佳答案
我认为ExecutorService
是个好主意,您应该向Callable
提交ExecutoService
,以便重新获得Future
。
要处理情况1,您应该对所有Future进行逻辑上与isDone()方法调用的返回值,要处理情况2,您应进行逻辑OR或类似的操作。
以下是参考-Callable和Future。
我不建议特定于Spring Boot,而是来自Core Java背景。这将帮助您入门,然后您可以优化方法并切换API。
希望能帮助到你 !!