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

时间:2020-04-07 12:12:06

标签: spring spring-integration

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

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

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

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

我尝试使用SequenceSizeReleaseStrategy设置为true的releasePartialSequences

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

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

1 个答案:

答案 0 :(得分:1)

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

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

如果序列中的所有缺口均已满足,则重新序列器也可以释放部分基团。