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