在分散聚集的情况下,定义静态信道(即在设计之前已知信道),从中聚合响应。
是否可以根据数组列表的大小(动态列表)多次调用相同的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,企业集成模式
答案 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不符合您的要求。