0

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

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

在我的情况下,有大小为 3 的 java 数组列表(动态)(每次大小不同),比如

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次)。由于大小每次都不一样,这里如何应用scather gather spring 集成模式?是否可以在这里应用任何其他弹簧集成模式?

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

Arraylist apiResponse
for each element in array list  
    call business api 
    apiResponse.add(eachElement Response)

. Spring 集成 , java , 企业 集成 模式 ;

4

1 回答 1

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)并行。在那次通话之后,您应该使用 anaggregator来收集结果。

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

于 2017-04-04T13:21:35.630 回答