アグリゲーター内のすべてのアグリゲーションに対して、フラッシュまたはcompletionSizeが効果的に必要です。グローバルcompletionSizeのように。
基本的に、バッチで受信されるすべてのメッセージが集約され、最後のメッセージが読み取られたときに、そのアグリゲーター内のすべての集約が一度に完了するようにします。
e.g. 1000 messages arrive (the length is not known beforehand)
aggregate on correlation id into bins
A 300
B 400
C 300 (size of the bins is not known before hand)
I want the aggregator not to complete until the 1000th exchange is aggregated
thereupon I want all of the aggregations in the aggregator to complete at once
CompleteSizeは各アグリゲーションに適用され、残念ながらアグリゲーター全体には適用されません。したがって、CompleteSize(1000)を設定すると、各集計が「完了する」前に1000を超える必要があるため、終了することはありません。
単一のMapオブジェクトを作成することで回避できますが、これはaggregator2の相関関係を回避するものであり、理想的には使用したいと思います。
そうですね、グローバルコンプリートサイズまたはフラッシングのいずれかで、これをインテリジェントに行う方法はありますか?