Mule 2.0フレームワークで使用されるコレクションアグリゲーターは、次のように機能します。
インバウンドルーターはメッセージのコレクションを受け取り、それをいくつかの小さなメッセージに分割します-それぞれの小さなメッセージには、親メッセージに対応する相関IDがスタンプされます
これらのメッセージはさまざまなサービスを流れます
最後に、これらのメッセージは、親メッセージの相関IDと予想されるメッセージの数に基づいてメッセージを収集するインバウンドアグリゲーターに到着します。予期されたすべてのメッセージが受信されると、集計関数が呼び出され、結果が返されます。
これで、グループ内のメッセージの数が適度に少ない場合にこれが正常に機能します。ただし、グループ内のメッセージの数が最大100kになると、後のメッセージが到着するのを待っているメッセージのグループを保持するために、多くのメモリが拘束されます。複数のグループが同時に集約されている場合、これはさらに悪化します。
この問題を回避する方法は、ストリーミングアグリゲーターを実装することです。私のユースケースでは、基本的にキーに基づいてさまざまなメッセージを要約しています。これは、グループ内のすべてのメッセージを同時に表示しなくても実行できます。結果をエンドポイントに転送する前に、すべてのメッセージが受信されたことを知りたいだけです。
これは問題の合理的な解決策のように聞こえますか?
これはすでにMuleのどこかに実装されていますか?
これを行うためのより良い方法はありますか?