对于最新稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

聚合器与重编序列器

聚合在概念上是 的对立面分配器. 它将一系列单独消息聚合成一条消息,且必然更为复杂。 默认情况下,聚合器返回包含来自新消息的有效载荷集合的消息。 同样的规则适用于重序器. 以下示例展示了分频-聚合器模式的一个典型示例:spring-doc.cadn.net.cn

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

分裂()方法将列表拆分为单独的消息,并发送给执行者频道. 这重序()方法根据消息头部中的序列细节重新排序消息。 这aggregate()方法收集这些消息。spring-doc.cadn.net.cn

不过,你可以通过指定发布策略和相关策略等来更改默认行为。 请考虑以下例子:spring-doc.cadn.net.cn

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

前述示例关联了具有myCorrelationKey在累积至少十条消息后,释放头部和释放消息。spring-doc.cadn.net.cn

类似的λ配置也适用于重序()EIP方法。spring-doc.cadn.net.cn