Spring集成:在聚合器中保留顺序

问题描述 投票:0回答:1

现在,我有一个用例,其中有大量事件进入。有几个拆分器,然后是下游的聚合器。由于数据流永无止境,并且分离器数量众多,因此我们无法计算出期望的消息总数。但是,我们使用了一个简单的SpeL发布策略表达式:

<release-strategy-expression="size() == 10"/>

我们正在使用group-timeout,并且还设置了send-partial-result-on-expiry=true

鉴于此用例,我得出的结论是,没有内置的方法可以保留事件流的原始顺序吗?

我已经尝试过将SequenceSizeReleaseStrategy设置为true的releasePartialSequences

我观察到的是,此消息将每个消息作为一个单独的组发送,因为它依赖于默认为零的group-size标头。

我错过了什么吗?给定此用例,是否有办法在聚合器中保留顺序?

spring spring-integration
1个回答
1
投票

为此,有一个EI模式resequencerhttps://docs.spring.io/spring-integration/docs/5.3.0.M4/reference/html/message-routing.html#resequencer

因此,您将其放置在聚合器之前,并且当该聚合器释放一个组时,消息将按顺序排列在结果列表中。

如果满足序列中的所有间隔,则重新序列器也可以释放部分组。

© www.soinside.com 2019 - 2024. All rights reserved.