此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.4.0! |
聚合器和 Resequencer
从概念上讲,An 与 .
它将一系列单独的消息聚合到一条消息中,并且必然更复杂。
默认情况下,聚合器返回一条消息,其中包含来自传入消息的有效负载集合。
相同的规则也适用于 .
以下示例显示了 splitter-aggregator 模式的规范示例:Aggregator
Splitter
Resequencer
@Bean
public IntegrationFlow splitAggregateFlow() {
return IntegrationFlow.from("splitAggregateInput")
.split()
.channel(MessageChannels.executor(this.taskExecutor()))
.resequence()
.aggregate()
.get();
}
该方法将列表拆分为单独的消息,并将它们发送到 .
该方法按消息标头中找到的序列详细信息对消息重新排序。
该方法收集这些消息。split()
ExecutorChannel
resequence()
aggregate()
但是,您可以通过指定发布策略和关联策略等来更改默认行为。 请考虑以下示例:
.aggregate(a ->
a.correlationStrategy(m -> m.getHeaders().get("myCorrelationKey"))
.releaseStrategy(g -> g.size() > 10)
.messageStore(messageStore()))
前面的示例将具有标头的消息关联起来,并在至少累积 10 封邮件后释放这些消息。myCorrelationKey
为 EIP 方法提供了类似的 lambda 配置。resequence()