Mule 2.0 框架中使用的集合聚合器有点像这样:
入站路由器接收一组消息并将其拆分为许多较小的消息 - 每个较小的消息都带有对应于父消息的相关 id
这些消息流经各种服务
最后,这些消息到达一个入站聚合器,该聚合器根据父消息的相关 id 和预期消息的数量收集消息。一旦收到所有预期的消息,就会调用聚合函数并返回结果。
现在,当组中的消息数量相当少时,这可以正常工作。然而,一旦一个组中的消息数量变得巨大~100k,那么就会有很多内存被占用来等待后面的消息到达的消息组。如果同时聚合多个组,情况会变得更糟。
解决此问题的一种方法是实现流式聚合器。在我的用例中,我基本上是基于一个键来总结各种消息,这可以在不必同时查看组中的所有消息的情况下完成。我只想知道在将结果转发到端点之前已收到所有消息。
这听起来像是解决问题的合理方法吗?
这是否已经在 Mule 的某个地方实现了?
有没有更好的方法来做到这一点?