现在,我有一个用例,其中有大量事件进入。有几个拆分器,然后是下游聚合器。由于数据流永无止境,并且分离器数量众多,因此我们无法计算出期望的消息总数。但是,我们使用了一个简单的SpeL发布策略表达式:
<release-strategy-expression="size() == 10"/>
我们正在使用group-timeout
,并且还设置了send-partial-result-on-expiry=true
。
鉴于此用例,我是否可以得出结论,没有内置的方法可以保留事件流的原始顺序?
我尝试使用SequenceSizeReleaseStrategy
设置为true的releasePartialSequences
。
我观察到的是,这是将每个消息作为一个单独的组发送,因为它依赖于默认为零的 group-size 标头。
我错过了什么吗?给定此用例,是否有办法在聚合器中保留顺序?
答案 0 :(得分:1)
为此,有一个EI模式resequencer
:https://docs.spring.io/spring-integration/docs/5.3.0.M4/reference/html/message-routing.html#resequencer。
因此,您将其放置在聚合器之前,然后当该聚合器释放组时,消息将按顺序排列在结果列表中。
如果序列中的所有缺口均已满足,则重新序列器也可以释放部分基团。