An 在概念上与 a 相反。 它将一系列单个消息聚合到单个消息中,并且必然更加复杂。 默认情况下,聚合器返回一条消息,其中包含来自传入消息的有效负载集合。 相同的规则也适用于 . 以下示例显示了 splitter-aggregator 模式的规范示例:AggregatorSplitterResequencerSpring中文文档

@Bean
public IntegrationFlow splitAggregateFlow() {
    return IntegrationFlow.from("splitAggregateInput")
            .split()
            .channel(MessageChannels.executor(this.taskExecutor()))
            .resequence()
            .aggregate()
            .get();
}

该方法将列表拆分为单独的消息,并将它们发送到 . 该方法根据消息标头中找到的序列详细信息对消息重新排序。 该方法收集这些消息。split()ExecutorChannelresequence()aggregate()Spring中文文档

但是,您可以通过指定发布策略和关联策略等来更改默认行为。 请看以下示例:Spring中文文档

.aggregate(a ->
        a.correlationStrategy(m -> m.getHeaders().get("myCorrelationKey"))
            .releaseStrategy(g -> g.size() > 10)
            .messageStore(messageStore()))

前面的示例将具有标头的消息关联起来,并在累积至少 10 个消息后释放这些消息。myCorrelationKeySpring中文文档

EIP方法也提供了类似的lambda配置。resequence()Spring中文文档