在分散集合中定义动态通道

时间:2017-04-04 06:24:16

标签: java spring-integration enterprise-integration

在分散聚集的情况下,定义静态信道(即在设计之前已知信道),从中聚合响应。

是否可以根据数组列表的大小(动态列表)多次调用相同的api。

在我的情况下,让java arraylist(动态)大小为3(每次大小不同),如

ArrayList
    1-> request for business api call(samp)
    2-> request for business api call(samp)
    3-> request for business api call(samp)   

,对于arraylist的每个元素,我需要调用业务api(samp是业务api,这里应该调用3次)。由于尺寸每次都不同,这里如何应用收集弹簧集成模式?是否可以在此处应用任何其他弹簧集成模式?

针对上述问题所做的事情(但以下方法是顺序处理方式,是否可以并行处理每个调用):

Arraylist apiResponse
for each element in array list  
    call business api 
    apiResponse.add(eachElement Response)
弹簧集成,java,企业集成模式

1 个答案:

答案 0 :(得分:0)

我想了解有关您的用例的更多信息。也许你可以从业务需求的角度来解释它。

无论如何,基于提供的信息,如:

  

我需要多次调用业务api

我可以建议像Splitter

这样的解决方案
@Splitter(inputChannel = "input", outputChannel = "output")
public List<String> split(String payload, @Header int size) {
    return Stream.generate(() -> payload)
            .limit(size)
            .collect(Collectors.toList());
}

因此,在这种情况下,您将生成一个具有标题大小的同一对象的列表。

output频道可以是ExecutorChannel,以便并行处理数据(调用业务API)。在通话结束后,您应该使用aggregator来收集结果。

根据您的描述,Scatter-Gather不符合您的要求。